Skip to content

Commit 3f041a7

Browse files
committed
2020-03-09
1 parent e11fbb8 commit 3f041a7

File tree

11 files changed

+214
-9
lines changed

11 files changed

+214
-9
lines changed

0543.二叉树的直径/0543-二叉树的直径.py

Lines changed: 3 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -13,14 +13,8 @@ def diameterOfBinaryTree(self, root):
1313
"""
1414
if not root:
1515
return 0
16-
self.res = 0
17-
def height(node):
16+
def Height(node):
1817
if not node:
1918
return 0
20-
left_h = height(node.left)
21-
right_h = height(node.right)
22-
23-
self.res = max(self.res, left_h + right_h)
24-
return 1 + max(left_h, right_h)
25-
height(root)
26-
return self.res
19+
return 1 + max(Height(node.left), Height(node.right))
20+
return max(self.diameterOfBinaryTree(root.left), Height(root.left) + Height(root.right), self.diameterOfBinaryTree(root.right))
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
class Solution(object):
2+
def maxValue(self, grid):
3+
"""
4+
:type grid: List[List[int]]
5+
:rtype: int
6+
"""
7+
if not grid or not grid[0]:
8+
return 0
9+
m, n = len(grid), len(grid[0])
10+
11+
for i in range(1, n):
12+
grid[0][i] += grid[0][i - 1]
13+
14+
for i in range(1, m):
15+
grid[i][0] += grid[i - 1][0]
16+
17+
for i in range(1, m):
18+
for j in range(1, n):
19+
grid[i][j] += max(grid[i - 1][j], grid[i][j - 1])
20+
21+
return grid[-1][-1]
22+
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
class Solution(object):
2+
def firstUniqChar(self, s):
3+
"""
4+
:type s: str
5+
:rtype: str
6+
"""
7+
from collections import Counter
8+
9+
dic = Counter(s)
10+
11+
for ch in s:
12+
if dic[ch] == 1:
13+
return ch
14+
return " "
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
# Definition for singly-linked list.
2+
# class ListNode(object):
3+
# def __init__(self, x):
4+
# self.val = x
5+
# self.next = None
6+
7+
class Solution(object):
8+
def getIntersectionNode(self, headA, headB):
9+
"""
10+
:type head1, head1: ListNode
11+
:rtype: ListNode
12+
"""
13+
la, lb = 0, 0
14+
15+
p = headA
16+
while p:
17+
la += 1
18+
p = p.next
19+
20+
p = headB
21+
while p:
22+
lb += 1
23+
p = p.next
24+
25+
if la < lb:
26+
headA, headB = headB, headA
27+
la, lb = lb, la
28+
29+
cnt = la - lb
30+
p = headA
31+
while cnt:
32+
cnt -= 1
33+
p = p.next
34+
35+
36+
while p != headB:
37+
p = p.next
38+
headB = headB.next
39+
return p
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
class Solution(object):
2+
def search(self, nums, target):
3+
"""
4+
:type nums: List[int]
5+
:type target: int
6+
:rtype: int
7+
"""
8+
return nums.count(target)
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
class Solution(object):
2+
def missingNumber(self, nums):
3+
"""
4+
:type nums: List[int]
5+
:rtype: int
6+
"""
7+
for i, num in enumerate(nums):
8+
if num == len(nums):
9+
continue
10+
if num != i:
11+
nums[num], nums[i] = nums[i], nums[num]
12+
13+
for i in range(len(nums)):
14+
if nums[i] != i:
15+
return i
16+
return len(nums)
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
# Definition for a binary tree node.
2+
# class TreeNode(object):
3+
# def __init__(self, x):
4+
# self.val = x
5+
# self.left = None
6+
# self.right = None
7+
8+
class Solution(object):
9+
def kthLargest(self, root, k):
10+
"""
11+
:type root: TreeNode
12+
:type k: int
13+
:rtype: int
14+
"""
15+
def inorder(node):
16+
if not node:
17+
return []
18+
return inorder(node.left) + [node.val] + inorder(node.right)
19+
20+
return inorder(root)[-k]
21+
# self.res = None
22+
# def dfs(node, left):
23+
# if not node:
24+
# return None
25+
26+
# if not self.res:
27+
# dfs(node.right, left)
28+
# if node.right:
29+
# left -= 1
30+
# if left == 1:
31+
# self.res = node.val
32+
# return
33+
# dfs(node.left, left - 1)
34+
35+
# dfs(root, k)
36+
# return self.res
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
# Definition for a binary tree node.
2+
# class TreeNode(object):
3+
# def __init__(self, x):
4+
# self.val = x
5+
# self.left = None
6+
# self.right = None
7+
8+
class Solution(object):
9+
def maxDepth(self, root):
10+
"""
11+
:type root: TreeNode
12+
:rtype: int
13+
"""
14+
if not root:
15+
return 0
16+
return 1 + max(self.maxDepth(root.left), self.maxDepth(root.right))
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
class Solution(object):
2+
def twoSum(self, nums, target):
3+
"""
4+
:type nums: List[int]
5+
:type target: int
6+
:rtype: List[int]
7+
"""
8+
left, right = 0, len(nums) - 1
9+
while left < right:
10+
s = nums[left] + nums[right]
11+
12+
if s == target:
13+
return [nums[left], nums[right]]
14+
elif s > target:
15+
right -= 1
16+
else:
17+
left += 1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
# Definition for a binary tree node.
2+
# class TreeNode(object):
3+
# def __init__(self, x):
4+
# self.val = x
5+
# self.left = None
6+
# self.right = None
7+
8+
class Solution(object):
9+
def lowestCommonAncestor(self, root, p, q):
10+
"""
11+
:type root: TreeNode
12+
:type p: TreeNode
13+
:type q: TreeNode
14+
:rtype: TreeNode
15+
"""
16+
if min(p.val, q.val) <= root.val <= max(p.val, q.val):
17+
return root
18+
if max(p.val, q.val) < root.val:
19+
return self.lowestCommonAncestor(root.left, p, q)
20+
return self.lowestCommonAncestor(root.right, p, q)

0 commit comments

Comments
 (0)