自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(19)
  • 收藏
  • 关注

原创 Leetcode permutaion and combination 总结

Leetcode permutation 和combination总结题目1:无重复元素permutation解析:题目2:有重复的permutation解析题目3:无重复的combination题目4:有重复元素的combination题目1:无重复元素permutation解析:对于无重复的permutation可以当成一个模板记住python代码如下:class Solution: def permute(self, nums: List[int]) -> List[List

2020-07-28 10:47:28 266

原创 Leetcode 234. Palindrome Linked List (python+cpp)

Leetcode 234. Palindrome Linked List题目解法:题目解法:使用快慢指针找中点,然后反转后半部分列表进行对比python:class Solution: def isPalindrome(self, head: ListNode) -> bool: def reverse_list(head): prev = None curr = head while curr

2020-07-17 09:59:29 88

原创 Leetcode 160. Intersection of Two Linked Lists (python+cpp)

Leetcode 160. Intersection of Two Linked Lists题目解法:双指针法题目解法:双指针法双指针求链表交点是必须要掌握的方法。我们使用两个指针,分别指向两个链表的头节点,并以相同的速度前进,若到达链表结尾,则移动到另一条链表的头节点继续前进。按照这种前进方法,两个指针会在若干次前进后同时到达相交节点。python:class Solution: def getIntersectionNode(self, headA: ListNode, headB:

2020-07-17 09:51:07 215

原创 Leetcode 24. Swap Nodes in Pairs(python+cpp)

Leetcode 24. Swap Nodes in Pairs题目解法:iterative或recursion题目解法:iterative或recursion链表最基础的操作,必须要会的首先讲iterative的步骤:定义一个dummy node储存指向链表头部的指针,用来最后返回结果定义一个prev_node,参与交换过程,保存指向下一组交换的两个节点中交换后的第一个节点指针,这样才能track整条列表取出当前需要交换的两个节点,建议重新命名,这样就不会导致交换的时候很多next搞混

2020-07-16 09:58:44 175

原创 Leetcode 206. Reverse Linked List (python+cpp)

Leetcode 206. Reverse Linked List题目解法:recursive和iterative题目解法:recursive和iterativepython版recursive解法:class Solution: def reverseList(self, head: ListNode) -> ListNode: def reverse(head,prev): if not head: retu

2020-07-16 07:46:33 139

原创 Leetcode 28. Implement strStr() (python+cpp)

Leetcode 28. Implement strStr题目解法:题目解法:brutal in python:class Solution: def strStr(self, haystack: str, needle: str) -> int: if not needle: return 0 n = len(needle) for i in range(len(haysta

2020-07-15 08:24:26 98

原创 Leetcode Basic Calculator I,II,III (python+cpp)

Leetcode 227. Basic Calculator II题目解析:题目解析:这个是必须掌握的题目。总体思路是,利用栈保存临时运算的结果,高优先级的先运算,最后直接对栈一次性求和。具体策略是:利用栈来临时储存之前的运算结果,利用pre_op来保存之前最近一个的操作符,利用num保存当前数字首先初始化stack为空,pre_op为+,num为0如果当前碰到的是数字,要跟之前保存的数字进行累加,这是为了应对多位数的出现如果当前碰到的是操作符或者是到了最后一个位置,那么对pre_op进行

2020-07-14 11:38:32 685

原创 Leetcode 696. Count Binary Substrings (python+cpp)

Leetcode 696. Count Binary Substrings题目解析:题目解析:题目的意思是,所有的binary子串中,0和1的个数相同的有几个。这道题目leetcode官方的解析很清楚,这边引用一下:We can convert the string s into an array groups that represents the length of same-character contiguous blocks within the string. For example,

2020-07-14 10:55:01 163

原创 Leetcode 647. Palindromic Substrings (python+cpp)

Leetcode 647. Palindromic Substrings题目解析题目解析虽然这是个medium,但是其实思路很清晰。回文的关键特征就是从中心对称。根据这个特性,可以从中心点出发,向两边扩散寻找。具体步骤为,找到字符组中所有可能作为中心的位置,然后找出以这个位置为中心的所有可能回文串。值得注意的是,回文字符串的中心可能是某个字符的位置,也可能是两个字符中间的位置。换句话说,可能回文字符串的长度是偶数,也可能是奇数。python:class Solution: def cou

2020-07-14 10:49:38 112

原创 Leetcode 205. Isomorphic Strings (python+cpp)

Leetcode 205. Isomorphic Strings题目解析:题目解析:同构的定义是,可以通过把一个字符串的某些相同的字符转换成另一些相同的字符,使得两个字符串相同,且两种不同的字符不能够被转换成同一种字符。可以建立一个字典,记录字符出现的位置。两个字符串中,有对应转换关系的字符必须在同一位置,否则两个字符串不同构。python:python解法这边要注意最后return的时候,我们前面的操作只保证了对于s中不同的字符,与t中的字符有相同位置的对应关系,但这只能保证s到t是正确的

2020-07-13 12:47:51 259

原创 Leetcode 242. Valid Anagram (python+cpp)

Leetcode 242. Valid Anagram题目解析:题目解析:python:class Solution: def isAnagram(self, s: str, t: str) -> bool: if len(s) != len(t): return False counts = collections.defaultdict(int) for i in rang

2020-07-13 12:27:23 144

原创 Leetcode 404. Sum of Left Leaves (python+cpp)

Leetcode 404. Sum of Left Leaves题目解析:题目解析:在递归的时候传一个是不是左节点的参数即可python:class Solution: def sumOfLeftLeaves(self, root: TreeNode) -> int: def helper(node,isleft): if not node: return if isleft and

2020-07-13 01:21:02 99

原创 Leetcode 572. Subtree of Another Tree (python+cpp)

Leetcode 572. Subtree of Another Tree题目解法:双层递归题目解法:双层递归虽然这道题目标的easy,但是其实蛮考对于递归的理解的。最直观的解法是双层递归,外层递归遍历节点,内层递归判断当前遍历的节点形成的子树是否与目标树相同。外层循环只要有一个节点符合情况即可,二内层循环需要每个节点都相同才行python:class Solution: def isSubtree(self, s: TreeNode, t: TreeNode) -> bool:

2020-07-10 09:46:46 167

原创 Leetcode 207. Course Schedule (python+cpp)

Leetcode 207. Course Schedule题目解法:拓扑排序题目解法:拓扑排序这道题目是很经典的拓扑排序,用BFS和DFS都可以实现,就跟Leetcode 785一样,BFS解法和DFS解法只差储存数据是用队列还是栈。具体解法如下:建立一个邻接矩阵表示图,在建立邻接矩阵的时候注意指向,必须是前修课程指向后修课程同时将所有入度为0的点加入队列或者栈进行搜索,将入度为0的点的相邻节点入度全部减1,如果出现了新的节点,那么将新节点加入队列和栈搜索结束后,如果图中所有节点都入度为0

2020-07-09 11:46:54 303

原创 Leetcode 785. Is Graph Bipartite? (python+cpp)

Leetcode 785. Is Graph Bipartite?题目解法: BFS或DFS+染色题目解法: BFS或DFS+染色对于二分图的判断是用经典的染色法。 染色的方式是,看能否用两种颜色将所有节点涂上颜色,并且保证相邻节点都是不一样的颜色。如果可以做到,那么说明图是可以二分的。这道题目用BFS或者DFS都是可以的,换句话说用队列或者堆栈都可以。如果是BFS,那么在当前节点涂完色时候,你会把他相邻的节点都涂成另一种颜色。如果是DFS的话,当前节点涂完之后,你会把最近的相邻节点涂成另一种颜色

2020-07-09 10:12:58 986

原创 Leetcode 226. Invert Binary Tree (python+cpp)

Leetcode 226. Invert Binary Tree题目解法:递归题目解法:递归先交换,再递归pythonclass Solution: def invertTree(self, root: TreeNode) -> TreeNode: if not root: return root.left,root.right = root.right,root.left self.invertTree(ro

2020-07-07 11:22:06 79

原创 Leetcode 617. Merge Two Binary Trees (python+cpp)

Leetcode 617 617. Merge Two Binary Trees题目解法:递归题目解法:递归先判断两边节点情况,然后进行递归构造子节点python:class Solution: def mergeTrees(self, t1: TreeNode, t2: TreeNode) -> TreeNode: if not t1: return t2 if not t2: return t1

2020-07-07 11:18:24 77

原创 Leetcode 669. Trim a Binary Search Tree (python+cpp)

Leetcode 669. Trim a Binary Search Tree题目解析:题目解析:如果当前节点在范围内,此节点不动,递归到下一层的左右子树否则,根据当前节点的范围,直接返回左子树或者右子树python代码如下:class Solution: def trimBST(self, root: TreeNode, L: int, R: int) -> TreeNode: def trim(node): if not node:

2020-07-05 09:53:19 95

原创 Leetcode 99. Recover Binary Search Tree (python+cpp)

Leetcode 99. Recover Binary Search Tree题目解析:题目解析:这道题目的解法有很多,但是我在这边只介绍一种比较基本的也最容易理解的方法。解这道题的关键在于,二叉查找树的中序遍历是一个单调递增的序列。所以把错误的二叉查找树复原之后,第一个错误位置的元素会比他后一个元素大,而第二个错误的元素会比他前面的元素小,根据这样的规律就可以找出两个元素,所以具体的步骤如下:将原树进行中序遍历找出被交换的两个元素遍历原树,修改相应两个位置的值python代码如下:

2020-07-05 09:26:27 157

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除