自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

转载 最接近的三数之和

思路:跟三数之和的思路相同,只不过这里是最接近target的三个数,同样将数组排序,固定第一个数,后面两个数用双指针移动,当三个数的和大于target,那么将右边指针左移,如果三个数的和小于target,那么将左边指针右移。class Solution(object): def threeSumClosest(self, nums, target): """ ...

2019-09-17 22:40:00 106

转载 三数之和

思路:先固定一个数,然后剩下两个数用双指针,这样可以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 135

转载 整数转罗马数字

思路: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 113

转载 盛最多水的容器

思路:用两个指针,因为指针往里面缩小,容器的宽度会减少,因此需要通过增加高度来抵消宽度的减少,因此移动高度短的指针期望寻找到更高的来替代,要不然面积会越来越小class Solution(object): def maxArea(self, height): """ :type height: List[int] :rtype: ...

2019-09-14 21:17:00 83

转载 最长回文子串

思路:遍历所有元素,从当前元素向两边扩展,如果两边相同那么可以拓展,回文串长度加2,如此循环。class Solution(object): def longestPalindrome(self, s): """ :type s: str :rtype: str """ max_len = 0 ...

2019-09-14 20:30:00 80

转载 两数相加

思路:因为数是用链表逆序表示的,因此先用列表将这些数提取出来。然后每一位对应相加大于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 85

转载 等差数列划分

思路:见题解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 122

转载 下降路径最小和

思路:新建一个跟数组一样大的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 142

转载 三角形最小路径和

思路:相当于建了一个相同大小的dp表,从三角形的底层往上层走,dp表中的值表示从下层走到当前地方的最小值,dp的更新规则是找到当前位置的下一层的同位置点或者索引加一的点(看成二叉树的形式的话相当于左右子节点)的两者中的最小值和当前位置的值的和class Solution(object): def minimumTotal(self, triangle): """...

2019-08-31 08:55:00 74

转载 不同的二叉搜索树-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 133

转载 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 194

转载 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 188

转载 把二叉树打印成多行 -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 169

转载 按之字形顺序打印二叉树 -python

思路:之前遇到过层序打印二叉树的题,使用一个队列存储每一层的节点,当一个节点出队列时,他的左右孩子入队列。那么这个问题是在这个问题的基础上加了点限制,因此我们也可以在之前的思路上稍作修改。首先用curLayer作为队列存储当前层的所有节点,把这一层标记成0或者1, 再用nextLayer层存储从curLayer成出队的节点的左右孩子(这是不同点,层序打印的是放在一个队列中的,因为现在需...

2019-08-12 21:48:00 156

转载 对称的二叉树-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 189

转载 二叉树的下一个结点 -python

思路:分4种情况:当该节点存在右子树时,那么下一个节点一定在右子树中产生这种情况下又分成两种情况:(1)右子树不存在左分支,那么要找的下一个节点就是右子树的根节点。(2)右子树中存在左分支,那么不停的寻找左分支的左分支就可以了。2.当该节点不存在右子树时,那么下一个节点一定在该节点的父节点中产生,这种情况下又分两种情况:(1)该节点是他的父节点的左孩子,那么下一个节点就是...

2019-08-12 15:12:00 142

转载 删除链表中重复的结点 -python

思路:因为重复的节点都要删除,因此需要标记重复开始前的上一个节点,又因为头结点有可能是重复的节点,为了操作方便,我们可以再链表前面设置一个空节点作为头结点,因此需要设置3个指针,第一个head指向头结点。第二个p用来标记重复节点的前面一个节点,第三个cur用来寻找重复的节点,一旦找到p就不移动了,cur继续往后寻找直到不是重复的节点。# -*- coding:utf-8 -*-# c...

2019-08-12 09:03:00 114

转载 链表中环的入口结点 -python

思路:转自https://www.nowcoder.com/questionTerminal/253d2c59ec3e4bc68da16833f79a38e4链接:https://www.nowcoder.com/questionTerminal/253d2c59ec3e4bc68da16833f79a38e4来源:牛客网假设x为环前面的路程(黑色路程),a为环入口到相遇点的路程...

2019-08-11 22:39:00 126

转载 构建乘积数组-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 124

转载 数组中重复的数字 -python

思路:题目比较简单,之间遍历一遍数组,不存在的话将这个值放入列表,否则输出这个值# -*- coding:utf-8 -*-class Solution: # 这里要特别注意~找到任意重复的一个值并赋值到duplication[0] # 函数返回True/False def duplicate(self, numbers, duplication): ...

2019-08-11 18:54:00 82

转载 把字符串转换成整数 -python

思路:从后往前遍历字符串,先不处理第一个字符,因为他可能是一个表示正负符号的字符。等除第一个都处理完了,再处理第一个字符就可以了# -*- coding:utf-8 -*-class Solution: def StrToInt(self, s): # write code here if len(s) == 0: re...

2019-08-11 18:48:00 145

转载 求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 990

转载 孩子们的游戏(圆圈中最后剩下的数) -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 204

转载 扑克牌顺子-python

思路:看是否连续就是看中间缺少的部分能否用大小王,即0来填充,因此只需要比较0的个数和中间缺少的个数就行了,如果中间缺少的比0的数目多,即大小王的个数不足以将缺少的填充,那么就不连续了# -*- coding:utf-8 -*-class Solution: def IsContinuous(self, numbers): # write code here...

2019-08-11 10:46:00 227

转载 翻转单词的顺序-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 273

转载 左旋转字符串-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 268

转载 和为s的两个数字-python

思路:因为数组是递增排序的,和相同的两个数,隔的越远,积越小,因此用两个指针,一个从前一个从后找,找到的第一个就是想要的最小的一组了# -*- coding:utf-8 -*-class Solution: def FindNumbersWithSum(self, array, tsum): # write code here p1 = 0 ...

2019-08-10 18:31:00 107

转载 和为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 95

转载 数组中只出现一次的数字-python

思路:用一个字典统计出每个数字出现的次数,然后遍历字典,找到只出现一次的# -*- coding:utf-8 -*-class Solution: # 返回[a,b] 其中ab是出现一次的两个数字 def FindNumsAppearOnce(self, array): # write code here dic = {} ...

2019-08-10 13:19:00 352

转载 平衡二叉树-python

思路:平衡二叉树的左右子树的深度相差不能超过1, 因此可以利用上一题求二叉树的深度的函数,对左右子树求最大深度,如果深度小于1,那么就是平衡二叉树了# -*- coding:utf-8 -*-# class TreeNode:# def __init__(self, x):# self.val = x# self.left = None...

2019-08-10 11:25:00 98

转载 二叉树的深度-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 80

转载 数字在排序数组中出现的次数-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 236

转载 两个链表的第一个公共节点-python

思路:因为当出现一个公共节点时,后面的节点都相同(因为链表的后继节点是唯一的,也就表明公共节点的后继一定相同,以此类推,后面的节点都相等),因此可以将所有节点放入栈中,从后往前看,直到不相同的点,那么他的前一个节点就是第一个公共节点了。# -*- coding:utf-8 -*-# class ListNode:# def __init__(self, x):# ...

2019-08-05 19:56:00 195

空空如也

空空如也

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

TA关注的人

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