![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
leetcode
文章平均质量分 65
刷题
chen_冲冲
这个作者很懒,什么都没留下…
展开
-
leetcode刷题的二分搜索技巧【Python】
4 二分搜索二分查找的常用场景:寻找一个数、寻找左侧边界、寻找右侧边界。先上框架:def binary_search(nums,target): """非递归 对有序数组可以寻找下标 """ if len(nums)==0: return -1 #nums=sorted(nums) l,r = 0, len(nums)-1 while l<=r: mid = l + (r-l)//2 if原创 2022-05-09 21:24:15 · 372 阅读 · 0 评论 -
leetcode刷题的滑动窗口技巧【Python】
leetcode刷题的滑动窗口技巧【Python】滑动窗口主要左右指针的应用,其中难点判断什么条件下缩小窗口,主要还是细节问题。以下4到题举例说明:76.最小覆盖子串(困难)image.png题目: 给你一个字符串 s 、一个字符串 t 。返回 s 中涵盖 t 所有字符的最小子串。如果 s 中不存在涵盖 t 所有字符的子串,则返回空字符串 “” 。注意:如果 s 中存在这样的子串,我们保证它是唯一的答案。示例 1:输入:s = “ADOBECODEBANC”, t = “ABC”输出:“B原创 2022-05-09 19:08:08 · 433 阅读 · 0 评论 -
leetcode刷题的差分数组技巧【Python】
leetcode刷题的差分数组技巧【Python】2 差分数组差分数组的主要适用场景是频繁对原始数组的某个区间的元素进行增减。常规思路是用for循环实现,时间复杂度为O(n)。用差分数组可将时间复杂度降为O(1)。具体做法为先构建差分数组diff,diff[i]=nums[i]-nums[i-1]nums=[8,2,6,3,1]diff =[nums[0]]for i in range(1,len(nums)): diff.append(nums[i]-nums[i-1])print(原创 2022-05-07 19:51:15 · 791 阅读 · 0 评论 -
二分查找--Python
二分查找–Python最常见的算法之一应对场景:元素升序排列的数组精确查找寻找上下边界双指针法,时间复杂度O(logn)def half_search(nums,target): """ 双指针法,时间复杂度O(logn) """ l, r = 0, len(nums)-1 while l<=r: mid =int(l+(r-l)/2) #print('mid',mid) if targe原创 2022-03-17 20:13:51 · 725 阅读 · 0 评论 -
Python递归-时间复杂度
Python递归-时间复杂度递归也是常见算法之一其时间复杂度一般认为O(logn),但递归算法的时间复杂度本质上是要看: 递归的次数 * 每次递归中的操作次数举例面试题:求x的n次方思路一:for循环def x_n(x,n): """ 时间复杂度O(n) """ if n==0: return 1 return x*x_n(x,n-1) if __name__=='__main__': print(x_n(2,0)原创 2022-03-17 20:41:58 · 738 阅读 · 0 评论 -
leetcode刷题的前缀和数组技巧【Python】
leetcode刷题的前缀和数组技巧【Python】本文主要介绍前缀和数组技巧,不代表无其他解法,比如【303.区域和检索-数组不可变】可直接用切片处理sum(nums[i:j+1]),因此主要目的是训练技巧。强烈建议大家熟悉数据结构的内容之后再去刷题,有事半功倍的效果。下面通过三道leetcode题来具体展开:303.区域和检索-数组不可变题目描述: 给定一个整数数组 nums,求出数组从索引 i 到 j(i ≤ j)范围内元素的总和,包含 i、j 两点。实现 NumArray 类:NumA原创 2022-05-07 13:17:08 · 558 阅读 · 0 评论