自定义博客皮肤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)
  • 收藏
  • 关注

原创 118,119杨辉三角

118题#杨辉三角形,每一行的初始和末尾是1,其余部分是上面两数之和#递归,动态规划,一步步模拟过程都能做出来#模拟过程 动态规划class Solution: def generate(self,numRows): dp=[[0]*n for n in range(1,numRows+1)] #生成长度为1到numRows的列表 for i in r...

2020-04-25 17:11:42 97

原创 24. 两两交换链表中的节点

这道题除了掌握递归和迭代的方法,也需要掌握迭代里节点交换的用法#递归class Solution: def swapPairs(self,head): #边界条件 if not head or not head.next:#head为空或只有head,都return head return head #初始化 ...

2020-04-25 15:33:03 109

原创 509. 斐波那契数 70爬楼梯

同题型,斐波那契数,使用动态规划斐波那契数,就只需要修改n==2的时候即可初始化0,1,1class Solution: def fib(self, n: int) -> int: if n<=1: return n if n==2: return 1 current,prev...

2020-04-24 17:35:49 143

原创 410. 分割数组的最大值 二分题

class Solution: def splitArray(self,nums,m): left,right=max(nums),sum(nums) while left < right: mid = (left+right)//2 sums,cnt=0,1 for i in ...

2020-04-14 23:34:47 88

原创 719. 找出第 k 小的距离对

题目描述:给定一个数组,返回第k个数对之间的最小距离,即计算每个数对之间的距离,进行排序,返回第k个值,一对 (A, B) 的距离被定义为 A 和 B 之间的绝对差值。思路:先进行排序,将数组变为升序,再采用二分方法。对于二分的数组可以看作距离组成的数组, left,right=0,nums[-1]-nums[0],给定二分中点mid,即所有距离的中点,统计小于mid的个数,如果个数<k,...

2020-04-13 23:32:45 107

原创 287. 寻找重复数 二分方法

给定一个 n + 1 个整数组成的数组 nums,其数字都在 1 到 n 之间(包括 1,n),可知至少存在一个重复的整数。题意:1~n个数本来该是n个数,组成n+1个数,则必然有重复数,找出重复数,而且题目假设只有一个重复数,所以剩下的数要填满1-n的数使用二分方法,统计<=mid的个数,如果左边不重复,则<=mid的数,应该为mid的值,如果大于mid的值,说明有左边有重复的数...

2020-04-12 22:03:45 231

原创 154. 寻找旋转排序数组中的最小值 II 重复值

使用二分方法,考虑几个例子,积累class Solution: def findMin(self,nums): if not nums: return left,right=0,len(nums)-1 while left<right: mid=left+(right-left)//2#...

2020-04-10 23:15:44 60

原创 744. 寻找比目标字母大的最小字母 二分方法

class Solution: def nextGreatestLetter(self,letters,target): if target<letters[0] or target>=letters[-1]:#特殊情况提前处理,target小于[0],则较大值是[0];target比[-1]>=,=的时候,因为是循环的,即第一个大于最后一个,所以较大值...

2020-04-09 23:09:52 110

原创 50. Pow(x, n)

题意:实现x的n次方函数考虑二分递归,count为统计数,sum为记录结果,根据count的2倍是否小于n进行递归反向二分查找,乘以2class Solution: def myPow(self,x,n): def re_binarysearch(x,n): if n==0: #任何数的0次方为1 return ...

2020-04-09 22:22:30 77

原创 658. 找到 K 个最接近的元素 可以看成搜索最优左边界

题意:与给定x的差值最小的k个值class Solution: def findClosestElements(self,arr,k,x): left,right=0,len(arr)-k #看作是搜索最优左边界,而左边界做多不能超len(arr)-k,所以左边界的right=len(arr)-k,很巧妙的思路 while left<right: ...

2020-04-08 23:23:06 104

原创 34.在排序数组中查找元素的第一个和最后一个位置 排序数组就用二分法查找

class Solution: def searchRange(self,nums,target): if not nums: return [-1,-1] def find(is_find_first): left,right=0,len(nums)-1 while left<...

2020-04-08 22:29:34 74

原创 162. 寻找峰值

峰值元素是指其值大于左右相邻值的元素。给定一个输入数组 nums,其中 nums[i] ≠ nums[i+1],找到峰值元素并返回其索引。数组可能包含多个峰值,在这种情况下,返回任何一个峰值所在位置即可。可以假设 nums[-1] = nums[n] = -∞,注意这是个审题点,因为左右极值,所以可以用二分法class Solution: def findPeakElement(sel...

2020-04-07 23:11:13 76

原创 33. 搜索旋转排序数组 153. 寻找旋转排序数组中的最小值 二分法

搜索旋转排序数组题意:假设按照升序排序的数组在预先未知的某个点上进行了旋转。 例如,数组 [0,1,2,,4,5,6,7] 旋转为 [4,5,6,7,0,1,2],搜索一个给定的target,如果数组中存在这个目标值,则返回它的索引,否则返回 -1class Solution: def search(self, nums, target): if len(nums)...

2020-04-07 22:22:35 97

原创 297. 二叉树的序列化与反序列化 BFS方法

from coollections import dequeclass Solution: def serialize(self,root): if not root: return "" queue=deque() queue.append(root) res=str(root.val)+'_'...

2020-04-04 23:12:01 98

原创 235. 二叉搜索树的最近公共祖先 236. 二叉树的最近公共祖先

236. 二叉树的最近公共祖先二叉树是没有排序的,而且树的形状也没要求,那么递归递归就是分析多种情况,然后不断递归调用class Solution: def lowestCommonAncestor(self,root,p,q): if not root or root==p or root==q: #root为空,或者是p和q中的一个值,那么都返回root ...

2020-04-04 22:33:03 100

原创 116. 填充每个节点的下一个右侧节点指针

将每个节点与右边的节点建立next关系,你只能使用常量级额外空间。 使用递归解题也符合要求,本题中递归程序占用的栈空间不算做额外的空间复杂度。两种方法,BFS和递归方法一 递归class Solution: def connect(self,root): def dfs(root): if not root: ...

2020-04-04 13:13:55 68

原创 105. 从前序与中序遍历序列构造二叉树 106. 从后序与中序遍历序列构造二叉树

给定前序和中序能构造一棵二叉树给定中序和后序能构造一棵二叉树思路就是 前序的第一个节点和后序的最后一个节点都是根节点,以这个根节点取划分中序,不断迭代得到一棵二叉树索引记不住的话,就是满足前,中的左子树的节点数相等,或 中,后的左子树的节点数相等即可从前序与中序遍历序列构造二叉树class Solution: def buildTree(self, preorder: List[...

2020-04-03 19:55:33 81

原创 112. 路径总和 递归和迭代

题意:给定一个数,是否存在一棵树的一个分支的和为该数两种方法,递归和迭代方法一 递归学一学:参照递归的4个步骤:①确定函数功能;②递推公式,重要,只要把想出来了,就成功了一半;③终止条件,通过举例子方式归纳得;④时空复杂度.在这里插入代码片...

2020-04-02 23:04:26 101

原创 380. 常数时间插入、删除和获取随机元素 动态数组+哈希表

题意:设计一个支持在平均时间复杂度O(1)下,执行以下操作的数据结构,insert(val),remove(val),getRandom我们具有两个平均插入时间为O(1)的选择,哈希表和动态数组list虽然哈希表提供常数时间的插入和删除,但是getrandom需要使用一个索引返回一个元素,而哈希表中没有索引,需要将哈希表的键转为列表,而这需要线性时间,所以使用列表list存储值。列表list可...

2020-04-01 23:04:31 172

空空如也

空空如也

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

TA关注的人

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