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
View Code

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
View Code

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
View Code

 

posted @ 2018-10-29 18:20  adminyzz  阅读(124)  评论(0编辑  收藏  举报