Merge Sorted Array

https://leetcode.com/problems/merge-sorted-array/ この問題は pointer を 3つ使う。 1つ目は、nums1 の最後に pointer を設定。 2つ目は、nums1 の m に pointer を設定。 3つ目は、nums2 の 最後に pointer を設定。 | 1 | 2 | 3 | 0 | 0 | 0 | ↑ ↑ | 2 | 5 | 6 | ↑ nums1[m - 1] と nums2[n - 1] の値を比べて、 nums2[n - 1] の値が大きいので、 nums1[last] = nums2[n - 1] を設定する。 そして nums2 の n の pointer を -1 してずらす。 また nums1 の last の pointer も -1 する。...

October 18, 2021

House Robber

https://leetcode.com/problems/house-robber/ 隣り合った家は訪れることが出来ないので、 変数 rob1 と rob2 を用意する。 for で全ての家を訪れ、 pointer のある位置+rob1 と rob2 の大きい値を temp に入れる。 rob1 pointerのある位置の前の前の家 rob2 pointerのある位置のは前の家 rob2 が nums の最後の位置まで行くとループが終わるので return で rob2 を返す。 class Solution: def rob(self, num: List[int])-> int: rob1, rob2 = 0, 0 for n in num: temp = max(rob1 + n, rob2) rob1 = rob2 rob2 = temp return rob2

October 18, 2021

Two Sum Ii Input Array Is Sorted

https://leetcode.com/problems/two-sum-ii-input-array-is-sorted/ この問題は pointer を2つ使い target になる数を探していく。 pointer を left と right に置き、 left と right の合計が target の値と同じかを計算する。 合計が大きい場合は right の pointer を左にずらし、 合計が小さい場合は left の pointer を右にずらしていく。 合計がtarget の値になるまでループして index の位置を返す。 target = 9 | 1 | 3 | 4 | 5 | 7 | 11 |  ↑ ↑ 1 + 11 = 12 > 9 | 1 | 3 | 4 | 5 | 7 | 11 |  ↑ ↑...

October 18, 2021

Find the Town Judge

https://leetcode.com/problems/find-the-town-judge/ graphの問題で、trust のペア, [a, b] は a から b に向かう directed edge である。 例えば、 N = 5 で trust trust = [[1,3],[2,3],[4,3],[4,1],[5,3],[5,1],[5,4]] の場合下記のような graph になる。 3 は 1,2,4,5 から信頼されていて、 誰も信頼していない。 そのため、judge は 3 になる。 この graph theory の、 outdegree の辺は、 その人が他の人を信頼している数になる。 indegree の辺は他の人から信頼されている数になる。 そのため indegree と outdegree によって誰が judge か判断できる。 judge は outdegree が 0 で indegree が N - 1 となる。 trust をループして全員の indegree, outdegree の数を調査できる。 indegree = [0] * (N + 1) outdegree = [0] * (N + 1) for a, b in trust: outdegree[a] += 1 indegree[b] += 1 そして、1 ~ N 人全員をループして、チェックすれば、 judge がわかる。...

October 17, 2021

Invert Binary Tree

DFS Base Case root が Null は None を返す。 Tree を反転して値が同じなら True を返すので、 children node の値を swap して同じか確かめる。 Time complexity: O(n) Mem complexity: O(n) # Definition for a binary tree node. # class TreeNode(object): # def __init__(self, val=0, left=None, right=None): # self.val = val # self.left = left # self.right = right class Solution(object): def invertTree(self, root): """ :type root: TreeNode :rtype: TreeNode """ if not root: return None tmp = root....

October 1, 2021