LeetCode
104 二叉树的最大深度
思路:
- 递归
- 深度优先
# Definition for a binary tree node.
# class TreeNode(object):
# def __init__(self, x):
# self.val = x
# self.left = None
# self.right = None
class Solution(object):
def maxDepth(self, root):
"""
:type root: TreeNode
:rtype: int
"""
if root is None:
return 0
return max(self.maxDepth(root.left),self.maxDepth(root.right))+1
226 反转二叉树
思路:递归
# Definition for a binary tree node.
# class TreeNode(object):
# def __init__(self, x):
# self.val = x
# self.left = None
# self.right = None
class Solution(object):
def invertTree(self, root):
"""
:type root: TreeNode
:rtype: TreeNode
"""
if root is None:
return root
else:
root.right,root.left = self.invertTree(root.left),self.invertTree(root.right)
return root
929 Unique Email Addresses
class Solution(object):
def numUniqueEmails(self, emails):
"""
:type emails: List[str]
:rtype: int
"""
out = []
for email in emails:
set1 = email.split('@')
set2 = set1[0].split('+',1)
set3 = set2[0].replace('.','')
set4 = set3 + '@' + set1[1]
#print set4
if set4 not in out:
out.append(set4)
return len(out)
905 Sort Array By Parity
class Solution(object):
def sortArrayByParity(self, A):
"""
:type A: List[int]
:rtype: List[int]
"""
ji = [];
ou = [];
for i in range(len(A)):
if (A[i] % 2 == 0):
ji.append(A[i])
else:
ou.append(A[i])
return ji + ou
942 DI String Match
class Solution(object):
def diStringMatch(self, S):
"""
:type S: str
:rtype: List[int]
"""
out = []
tmp = [i for i in range(len(S)+1)]
left = 0
right = len(tmp) - 1
for key in S:
if key == 'I':
out.append(left)
left +=1
else:
out.append(right)
right -=1
out.append(max(right,left))
return out
283. Move Zeroes
class Solution(object):
def moveZeroes(self, nums):
"""
:type nums: List[int]
:rtype: void Do not return anything, modify nums in-place instead.
"""
idxs = [idx for idx , num in enumerate(nums) if num == 0]
print idxs
for idx in idxs[::-1]: //将idxs反序
print idx
nums.pop(idx)
nums += [0]*len(idxs)