Implementation(3)
-
Leetcode 316. Remove Duplicate Letters - Python
Leetcode 316 문제 보기 문제 이해하기 소문자 알파벳으로 이루어진 문자열 s가 있다. (1 str: counter = collections.Counter(s) visited, stack = set(), [] for char in s: counter[char] -= 1 if char in visited: continue while stack and char 0: visited.remove(stack.pop()) stack.append(char) visited.add(char) return ''.join(stack) Leetcode 316. Remove Duplicate Letters https://leetcode.com/proble..
2022.05.07 -
Leetcode 15. 3Sum - Python
Leetcode 15 문제 보기 문제 이해하기 정수가 담긴 리스트 nums가 있다. (-10^5 0: right -= 1 elif three_sum List[List[int]]: res = [] if len(nums) 0 and n..
2022.04.06 -
Leetcode 238. Product of Array Except Self - Python
Leetcode 238 문제 보기 문제 이해하기 -30이상 30이하의 수로 이루어진 리스트 nums가 있다. 이때 각 숫자당, 본인을 제외한 나머지 숫자들의 곱을 가지는 리스트를 출력하라. 예를 들어 nums = [1,2,3,4]일 경우, [(2 * 3 * 4), (1 * 3 * 4), (1 * 2 * 4), (1 * 2 * 3)], 즉 [24,12,8,6]를 출력하면된다. 다만 나눗셈을 사용해서는 안되며 O(n) 이내의 시간복잡도를 가져야한다. 아이디어 구상 보통의 경우라면, nums의 모든 숫자를 곱한 값에서 각 원소를 나누면 답이 쉽고 빠르게 나올 것이다. 그러나 본 문제에서는 나눗셈을 사용해서는 안된다. 그렇다면 어떻게 해결해야할까? 시각화를 통해 생각을 정리해보자. (nums = [1,2,3,4..
2022.04.04