일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- python 릿코드
- 릿코드 풀기
- leetcode풀이
- leetcode풀기
- 릿코드풀이
- 파이썬 알고리즘
- 파이썬릿코드풀기
- 릿코드 파이썬
- LeetCode
- 파이썬알고리즘
- python priority queue
- python 알고리즘
- 알고리즘풀이
- 파이썬릿코드
- 릿코드
- 알고리즘풀기
- 릿코드풀기
- 파이썬 릿코드
- python zip_longest
- 상가수익률계산기
- leetcode 풀기
- binary search
- 파이썬알고리즘풀기
- 잇츠디모
- 파이썬 알고리즘 풀기
- 파이썬 프로그래머스
- 코틀린기초
- python Leetcode
- python sorted
- python xor
- Today
- Total
목록알고리즘 (194)
소프트웨어에 대한 모든 것
2181. Merge Nodes in Between Zeros https://leetcode.com/problems/merge-nodes-in-between-zeros/ 문제) 솔루션1) # Definition for singly-linked list. # class ListNode: # def __init__(self, val=0, next=None): # self.val = val # self.next = next class Solution: def mergeNodes(self, head): cur = head.next cur_sum = 0 res = [] while cur: if cur.val == 0: res.append(cur_sum) cur_sum = 0 else: cur_sum += cur...
링크드 리스트에서 사이클(순환)을 찾는 알고리즘 중에 Floyd's Cycle Detection Algorithm (플로이드 순환 찾기 알고리즘)이 있습니다. 두 포인터를 이용해서 첫 번째 포인터는 one step 이동(slow pointer) 두 번째 포인터는 two step 이동하면서(fast pointer) 두 포인터가 만나게 된다면 리스트는 순환 사이클이 존재하는 것입니다. Floyd's Cycle Detection 알고리즘 예제 코드 class ListNode: def __init__(self, val): self.val = val self.next = None def has_cycle(head): slow = head fast = head while fast and fast.next: # mo..
287. Find the Duplicate Number https://leetcode.com/problems/find-the-duplicate-number/ Find the Duplicate Number - LeetCode Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com 문제) 솔루션1) 정렬 정렬한 다음에 순차적으로 중복된 숫자를 찾습니다. class Solution: def findDuplicate(self, nums): nums = sorted(nums) for i in r..
34. Find First and Last Position of Element in Sorted Array https://leetcode.com/problems/find-first-and-last-position-of-element-in-sorted-array/ 문제) 솔루션1) binary search 풀이 순서: 1) 바이너리 서치로 target을 탐색 2) 찾은 target에서 왼쪽으로 인덱스를 이동하면서 동일한 target 값이 나올 때 까지 이동 (left idx) 3) 찾은 target에서 오른쪽 인덱스를 이동하면서 동일한 target 값이 나올 때 까지 이동 (right idx) 위 풀이는 결국 시간 복잡도 O(n)을 갖기 때문에 O(logn)을 만족하지 못 합니다. class Solutio..
64. Minimum Path Sum https://leetcode.com/problems/minimum-path-sum/ Minimum Path Sum - LeetCode Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com 문제) 솔루션1) iterative Bottom-up 방식으로 풀어 나갑니다. 먼저 0행을 초기화합니다. 0열을 초기화합니다. 이제 m-1행, n-1을 향해서 순차적으로 채워나갑니다. 채워 나갈 때 최소 sum을 구하면서 채워 나갑니다. 예를 들어 grid[1]..
108. Convert Sorted Array to Binary Search Tree https://leetcode.com/problems/convert-sorted-array-to-binary-search-tree/ 문제) 솔루션1) 재귀 # Definition for a binary tree node. # class TreeNode: # def __init__(self, val=0, left=None, right=None): # self.val = val # self.left = left # self.right = right class Solution: def sortedArrayToBST(self, nums: List[int]) -> Optional[TreeNode]: if not nums: ret..
주어진 (정렬된) 배열에 대해서 높인 균형 이진탐색 트리로 변환하는 코드입니다. 재귀적으로 방법으로 간단히 해결할 수 있습니다. class TreeNode(): def __init__(self, val): self.val = val self.left = None self.right = None def array_to_bst(nums): if not nums: return None # 중앙 인덱스 mid_idx = len(nums)//2 # 중앙값으로 노드 생성 node = TreeNode(nums[mid_idx]) # left subtree 구성 # values < nums[mid_idx] node.left = array_to_bst(nums[:mid_idx]) # right subtree 구성 # va..
662. Maximum Width of Binary Tree https://leetcode.com/problems/maximum-width-of-binary-tree/ Maximum Width of Binary Tree - LeetCode Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com 문제) 솔루션1) 재귀 문제에 대한 이해를 확실히 하지 못해서 많이 헤맸습니다. 문제가 원하는 바를 다시 정리하자면, "바이너리 트리에서 모든 레벨에서의 최대 폭을 리턴하는 것'입니다. 문제를 해..