560 https://leetcode.com/problems/subarray-sum-equals-k/
딕셔너리에 https://leetcode.com/problems/two-sum/ 문제를 풀때처럼 이전까지의 합을 저장해놓는다. 그리고 현재까지의 총합 - k가 딕셔너리에 있으면 이 값은 이전 어디선가 만들어질수 있다는 뜻이므로 그만큼 +를 해준다.
그게 아니면 해당 수가 만들어질 경우의 수를 딕셔너리에 저장해준다.
class Solution(object): def subarraySum(self, nums, k): d = {} d[0] = 1 total = 0 ret = 0 for i in xrange(len(nums)): total += nums[i] if total - k in d: ret += d[total-k] if total in d: d[total] += 1 else: d[total] = 1 return ret
937 https://leetcode.com/problems/reorder-data-in-log-files/
문제 푸는시간보다 문제를 이해하는데 시간이 더 걸렸다..... 별로 좋은 문제는 아닌듯 싶다
class Solution(object): def reorderLogFiles(self, logs): digit_list = [] alpha_list = [] for l in logs: s = l.split() if s[1].isdigit(): digit_list.append(s) else: alpha_list.append(s) return map(lambda x: ' '.join(x),sorted(alpha_list, key=lambda x:[x[1:], x[0]]) + digit_list)
54 https://leetcode.com/problems/spiral-matrix/
달팽이 배열?같은거 구현.
class Solution(object): def spiralOrder(self, matrix): ret = [] while True: if not matrix: break if matrix: # 왼~오 ret += matrix.pop(0) if matrix and matrix[0]: # 오른쪽 위~ 오른쪽 아래 for row in matrix: ret.append(row.pop()) if matrix: # 맨 아래 오른쪽~ 맨 아래 왼쪽 ret += matrix.pop()[::-1] if matrix and matrix[0]: for row in matrix[::-1]: # 맨 아래 왼쪽~ 맨 위 왼쪽 ret.append(row.pop(0)) return ret
넘사벽 답변 : https://leetcode.com/problems/spiral-matrix/discuss/20571/1-liner-in-Python-%2B-Ruby
59 https://leetcode.com/problems/spiral-matrix-ii/
달팽이 2
class Solution(object): def generateMatrix(self, n): ret = [[0 for j in xrange(n)] for i in xrange(n)] l,r,hi,lo = 0, n, n, 0 num = 1 while l < r and lo < r: for i in xrange(l, r): ret[lo][i] = num num += 1 lo += 1 for i in xrange(lo, hi): ret[i][r-1] = num num += 1 r -= 1 for i in xrange(r-1, l-1, -1): ret[hi-1][i] = num num += 1 hi -= 1 for i in xrange(hi-1, lo-1, -1): ret[i][l] = num num += 1 l += 1 return ret
'algorithm > problem solving' 카테고리의 다른 글
leetcode 263(ugly num), 264(ugly num2), 313 (0) | 2020.05.18 |
---|---|
leetcode 773(bfs), 23(merge k lists), 204(소수 구하기), 279(dp) (0) | 2020.05.17 |
leetcode 297(트리), 449, 606(트리), 652(트리) (0) | 2020.05.10 |
leetcode 33(이분 탐색), 81(이분 탐색), 153(이분 탐색) (0) | 2020.05.09 |
leetcode 322(dp), 983(dp), 289(비트 연산) (0) | 2020.05.05 |