Leetcode刷题记录_20181029
235. Lowest Common Ancestor of a Binary Search Tree
在一个二叉搜索树中找两个节点的最小公共父节点。
使用二叉搜索树的性质,设x是二叉搜索树中的一个结点。如果y是x左子树中的一个结点,那么会有y.key<=x.key;如果y是x右子树中的一个节点,那么有y.key>=x.key
https://blog.csdn.net/u013405574/article/details/51058133
1 class Solution(object): 2 def lowestCommonAncestor(self, root, p, q): 3 """ 4 :type root: TreeNode 5 :type p: TreeNode 6 :type q: TreeNode 7 :rtype: TreeNode 8 """ 9 if not root: 10 return None 11 if root.val>max(p.val,q.val): 12 return self.lowestCommonAncestor(root.left,p,q) 13 if root.val<min(p.val,q.val): 14 return self.lowestCommonAncestor(root.right,p,q) 15 if root.val >= min(p.val,q.val) and root.val<= max(p.val,q.val): 16 return root
237. Delete Node in a Linked List
删除链表中其中一个节点,不指定链表起始位置。
解法:用下一节点替换当前节点,删除下一节点。
1 class Solution: 2 def deleteNode(self, node): 3 """ 4 :type node: ListNode 5 :rtype: void Do not return anything, modify node in-place instead. 6 """ 7 node.val = node.next.val 8 node.next = node.next.next
242.Valid Anagram
判断两个字符串是否互为互相排列。1:先列表后排序,然后对比;2:创建字典;3:使用count方法
1 class Solution(object): 2 def isAnagram(self, s, t): 3 """ 4 :type s: str 5 :type t: str 6 :rtype: bool 7 """ 8 """list1 = list(s) 9 list2 = list(t) 10 list1.sort() 11 list2.sort() 12 return list1 == list2""" 13 dict1 = {} 14 dict2 = {} 15 for i in s: 16 if i in dict1: 17 dict1[i] +=1 18 else: 19 dict1[i] = 1 20 for j in t: 21 if j in dict2: 22 dict2[j] +=1 23 else: 24 dict2[j] = 1 25 return dict1 == dict2