- 博客(33)
- 收藏
- 关注
转载 最接近的三数之和
思路:跟三数之和的思路相同,只不过这里是最接近target的三个数,同样将数组排序,固定第一个数,后面两个数用双指针移动,当三个数的和大于target,那么将右边指针左移,如果三个数的和小于target,那么将左边指针右移。class Solution(object): def threeSumClosest(self, nums, target): """ ...
2019-09-17 22:40:00
112
转载 三数之和
思路:先固定一个数,然后剩下两个数用双指针,这样可以O(n2)时间完成class Solution(object): def threeSum(self, nums): """ :type nums: List[int] :rtype: List[List[int]] """ nums.sort()...
2019-09-17 21:54:00
143
转载 整数转罗马数字
思路:https://leetcode-cn.com/problems/integer-to-roman/solution/tan-xin-suan-fa-by-liweiwei1419/class Solution(object): def intToRoman(self, num): """ :type num: int :r...
2019-09-14 22:50:00
123
转载 盛最多水的容器
思路:用两个指针,因为指针往里面缩小,容器的宽度会减少,因此需要通过增加高度来抵消宽度的减少,因此移动高度短的指针期望寻找到更高的来替代,要不然面积会越来越小class Solution(object): def maxArea(self, height): """ :type height: List[int] :rtype: ...
2019-09-14 21:17:00
89
转载 最长回文子串
思路:遍历所有元素,从当前元素向两边扩展,如果两边相同那么可以拓展,回文串长度加2,如此循环。class Solution(object): def longestPalindrome(self, s): """ :type s: str :rtype: str """ max_len = 0 ...
2019-09-14 20:30:00
91
转载 两数相加
思路:因为数是用链表逆序表示的,因此先用列表将这些数提取出来。然后每一位对应相加大于10就进位,进位用carry表示。有两个特殊情况要考虑:(1)象5+5这种,两个数的位数一样,最后要增加一位。(2)象1+99这种,两个数的位数不一样,先将1+9相加跳出循环,后面是carry+9=10,又出现了一个进位。# Definition for singly-linked list.# cl...
2019-09-12 17:12:00
96
转载 等差数列划分
思路:见题解https://leetcode-cn.com/problems/arithmetic-slices/solution/deng-chai-shu-lie-hua-fen-by-leetcode/class Solution(object): def numberOfArithmeticSlices(self, A): """ :ty...
2019-09-04 16:39:00
130
转载 下降路径最小和
思路:新建一个跟数组一样大的dp表,dp[i][j]表示经过A[i][j]点时最小的路径和。class Solution(object): def minFallingPathSum(self, A): """ :type A: List[List[int]] :rtype: int """ m ...
2019-09-04 14:51:00
151
转载 三角形最小路径和
思路:相当于建了一个相同大小的dp表,从三角形的底层往上层走,dp表中的值表示从下层走到当前地方的最小值,dp的更新规则是找到当前位置的下一层的同位置点或者索引加一的点(看成二叉树的形式的话相当于左右子节点)的两者中的最小值和当前位置的值的和class Solution(object): def minimumTotal(self, triangle): """...
2019-08-31 08:55:00
84
转载 不同的二叉搜索树-python
https://leetcode-cn.com/problems/unique-binary-search-trees/思路:对于n个数,1,2,3,4,,,,i,,,n。以i为节点时,i前面的序列作为左子,i右边的作为右子树。左右子树时有顺序的,因此可以忽略具体值得大小,只需要看序列的个数。假设长度为n的序列的有F(n)种构造个数,那么以第i个节点为跟节点的时候个数为前后两个新的序列...
2019-08-30 22:21:00
140
转载 64. 最小路径和-python
思路:经典的dp题目,应该是新建一个dp表,dp[i][j]表示从左上角到grid[i][j]的最短路径,因为只能往下和往右走,因此dp[i][j] = min(dp[i-1][j], dp[i][j-1]) + grid[i][j],经过压缩后可以使用一维的dp表,但是更新每个dp[i][j]只需要用到当前的grid[i][j],因此可以就把grid作为dp表,不用另外申请变量。cl...
2019-08-14 10:46:00
205
转载 322.零钱兑换-python
动态规划问题,稍后更新思路class Solution(object): def coinChange(self, coins, amount): """ :type coins: List[int] :type amount: int :rtype: int """ INF = f...
2019-08-13 20:59:00
199
转载 把二叉树打印成多行 -python
思路:跟上一篇的之字形打印思路类似,只不过不用隔层翻转打印# -*- coding:utf-8 -*-# class TreeNode:# def __init__(self, x):# self.val = x# self.left = None# self.right = Noneclass Solution: ...
2019-08-13 08:50:00
173
转载 按之字形顺序打印二叉树 -python
思路:之前遇到过层序打印二叉树的题,使用一个队列存储每一层的节点,当一个节点出队列时,他的左右孩子入队列。那么这个问题是在这个问题的基础上加了点限制,因此我们也可以在之前的思路上稍作修改。首先用curLayer作为队列存储当前层的所有节点,把这一层标记成0或者1, 再用nextLayer层存储从curLayer成出队的节点的左右孩子(这是不同点,层序打印的是放在一个队列中的,因为现在需...
2019-08-12 21:48:00
164
转载 对称的二叉树-python
# -*- coding:utf-8 -*-# class TreeNode:# def __init__(self, x):# self.val = x# self.left = None# self.right = Noneclass Solution: def isSymmetrical(self, pRo...
2019-08-12 16:37:00
198
转载 二叉树的下一个结点 -python
思路:分4种情况:当该节点存在右子树时,那么下一个节点一定在右子树中产生这种情况下又分成两种情况:(1)右子树不存在左分支,那么要找的下一个节点就是右子树的根节点。(2)右子树中存在左分支,那么不停的寻找左分支的左分支就可以了。2.当该节点不存在右子树时,那么下一个节点一定在该节点的父节点中产生,这种情况下又分两种情况:(1)该节点是他的父节点的左孩子,那么下一个节点就是...
2019-08-12 15:12:00
150
转载 删除链表中重复的结点 -python
思路:因为重复的节点都要删除,因此需要标记重复开始前的上一个节点,又因为头结点有可能是重复的节点,为了操作方便,我们可以再链表前面设置一个空节点作为头结点,因此需要设置3个指针,第一个head指向头结点。第二个p用来标记重复节点的前面一个节点,第三个cur用来寻找重复的节点,一旦找到p就不移动了,cur继续往后寻找直到不是重复的节点。# -*- coding:utf-8 -*-# c...
2019-08-12 09:03:00
121
转载 链表中环的入口结点 -python
思路:转自https://www.nowcoder.com/questionTerminal/253d2c59ec3e4bc68da16833f79a38e4链接:https://www.nowcoder.com/questionTerminal/253d2c59ec3e4bc68da16833f79a38e4来源:牛客网假设x为环前面的路程(黑色路程),a为环入口到相遇点的路程...
2019-08-11 22:39:00
137
转载 构建乘积数组-python
思路:参考https://blog.csdn.net/u010005281/article/details/80200398# -*- coding:utf-8 -*-class Solution: def multiply(self, A): # write code here B = [1]*len(A) for i in ...
2019-08-11 20:02:00
131
转载 数组中重复的数字 -python
思路:题目比较简单,之间遍历一遍数组,不存在的话将这个值放入列表,否则输出这个值# -*- coding:utf-8 -*-class Solution: # 这里要特别注意~找到任意重复的一个值并赋值到duplication[0] # 函数返回True/False def duplicate(self, numbers, duplication): ...
2019-08-11 18:54:00
87
转载 把字符串转换成整数 -python
思路:从后往前遍历字符串,先不处理第一个字符,因为他可能是一个表示正负符号的字符。等除第一个都处理完了,再处理第一个字符就可以了# -*- coding:utf-8 -*-class Solution: def StrToInt(self, s): # write code here if len(s) == 0: re...
2019-08-11 18:48:00
154
转载 求1+2+3+.....+n-python
思路:使用递归f(n) = f(n-1) + n, 但是不能使用if进行递归出口的控制,因此利用python中and的属性,即and判断都为真的话输出and后面的那个数字# -*- coding:utf-8 -*-# -*- coding:utf-8 -*-class Solution: def Sum_Solution(self, n): # write ...
2019-08-11 12:50:00
995
转载 孩子们的游戏(圆圈中最后剩下的数) -python
思路:用一个指针,循环遍历列表,模拟每个在场孩子报数,用cnt计数,当报到m-1后,将这个人出列,cnt置为0,剩下的人继续报数# -*- coding:utf-8 -*-class Solution: def LastRemaining_Solution(self, n, m): # write code here if n == 0 and...
2019-08-11 11:23:00
210
转载 扑克牌顺子-python
思路:看是否连续就是看中间缺少的部分能否用大小王,即0来填充,因此只需要比较0的个数和中间缺少的个数就行了,如果中间缺少的比0的数目多,即大小王的个数不足以将缺少的填充,那么就不连续了# -*- coding:utf-8 -*-class Solution: def IsContinuous(self, numbers): # write code here...
2019-08-11 10:46:00
239
转载 翻转单词的顺序-python
思路:用到了split join等内置函数,之后再补充不用内置函数的方法吧# -*- coding:utf-8 -*-class Solution: def ReverseSentence(self, s): # write code here if s == "": return "" out = s....
2019-08-11 10:05:00
281
转载 左旋转字符串-python
思路:左移n位就是把前n位移动到字符串后面去# -*- coding:utf-8 -*-class Solution: def LeftRotateString(self, s, n): # write code here return s[n:] + s[:n]转载于:https://www.cnblogs.com/dolisun/p/...
2019-08-10 18:52:00
274
转载 和为s的两个数字-python
思路:因为数组是递增排序的,和相同的两个数,隔的越远,积越小,因此用两个指针,一个从前一个从后找,找到的第一个就是想要的最小的一组了# -*- coding:utf-8 -*-class Solution: def FindNumbersWithSum(self, array, tsum): # write code here p1 = 0 ...
2019-08-10 18:31:00
114
转载 和为s的正数序列-python
思路:参考https://blog.csdn.net/qq_41822235/article/details/82109081 里面的方法4同时因为python2.7的原因,除法会省去小数点后面的数字,if语句那里加了一句ij == 2tsum,# -*- coding:utf-8 -*-class Solution: def FindContinuousSequence(...
2019-08-10 16:36:00
101
转载 数组中只出现一次的数字-python
思路:用一个字典统计出每个数字出现的次数,然后遍历字典,找到只出现一次的# -*- coding:utf-8 -*-class Solution: # 返回[a,b] 其中ab是出现一次的两个数字 def FindNumsAppearOnce(self, array): # write code here dic = {} ...
2019-08-10 13:19:00
363
转载 平衡二叉树-python
思路:平衡二叉树的左右子树的深度相差不能超过1, 因此可以利用上一题求二叉树的深度的函数,对左右子树求最大深度,如果深度小于1,那么就是平衡二叉树了# -*- coding:utf-8 -*-# class TreeNode:# def __init__(self, x):# self.val = x# self.left = None...
2019-08-10 11:25:00
104
转载 二叉树的深度-python
思路:用递归思想,不停往下找节点,找到一个节点加1# -*- coding:utf-8 -*-# class TreeNode:# def __init__(self, x):# self.val = x# self.left = None# self.right = Noneclass Solution: d...
2019-08-10 10:46:00
89
转载 数字在排序数组中出现的次数-python
思路:直接遍历一遍,出现就加1# -*- coding:utf-8 -*-class Solution: def GetNumberOfK(self, data, k): # write code here cnt = 0 for i in data: if i == k: ...
2019-08-05 20:21:00
243
转载 两个链表的第一个公共节点-python
思路:因为当出现一个公共节点时,后面的节点都相同(因为链表的后继节点是唯一的,也就表明公共节点的后继一定相同,以此类推,后面的节点都相等),因此可以将所有节点放入栈中,从后往前看,直到不相同的点,那么他的前一个节点就是第一个公共节点了。# -*- coding:utf-8 -*-# class ListNode:# def __init__(self, x):# ...
2019-08-05 19:56:00
202
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人