
leetcode
文章平均质量分 57
WeissSama
写清楚 搞清楚
展开
-
【LeetCode 图论 一】初探有向图Directed Graph
由于搜索是从随机的点开始的,我们将没有相邻节点的点入栈之后,再回溯到初始节点,将它入栈,但是后面的搜索也可能会碰到它。所以要给已经搜索的节点打上标签。原创 2023-04-17 12:42:40 · 890 阅读 · 0 评论 -
Python二分模版和bisect函数 LeetCode
所以总结一下,这里写的b1(), b2(), b3()都是bisect.bisect_left()的具体实现,只是分别用的左闭右开,闭区间和开区间三种不同的思想。那接下来我们考虑一下怎么实现bisect.bisect_right()函数。而如果target存在于ls中,我们想找它最后一次出现的位置。其实bisect.bisect_right的视线方式可以用。原创 2023-04-13 19:28:44 · 158 阅读 · 0 评论 -
DFS和回溯。LeetCode200岛屿数目;LeetCode46全排列;LeetCode17电话号码的字母组合;牛客HJ43迷宫问题
我个人感觉回溯就是DFS的一种应用。DFS有4个比较重要的点,或者说4个步骤而回溯更强调搜过之后恢复状态,个人认为,很多排列组合的场景都可以用回溯的思想搜索出来。原创 2023-04-11 19:43:13 · 130 阅读 · 0 评论 -
python表达近似无穷大的整数和浮点数
python原创 2022-07-17 23:38:16 · 432 阅读 · 0 评论 -
leetcode滑动窗口;子串最长长度问题 转化为 子串个数问题。leetcode 992 K 个不同整数的子数组;159至多包含两个不同字符的最长子串;904水果成篮;
leetcode滑动窗口 leetcode467 leetcode 795原创 2022-07-15 12:06:22 · 199 阅读 · 0 评论 -
leetcode滑动窗口子数组个数问题;leetcode795 区间子数组个数;leetcode 467 环绕字符串中唯一的子字符串
leetcode滑动窗口原创 2022-07-15 10:19:23 · 233 阅读 · 0 评论 -
leetcode双指针之固定长度窗口; 438 找到字符串中所有字母异位词;567 字符串的排列;1151 最少交换次数来组合所有的1
双指针之固定长度窗口原创 2022-07-07 01:17:00 · 192 阅读 · 0 评论 -
leetcode变长窗口,3无重复字符的最长子串;159至多包含两个不同字符的最长子串;209长度最小的子数组;487&1004最大连续1的个数;1208尽可能使字符串相等;904水果成篮
leetcode双指针原创 2022-07-06 23:41:35 · 272 阅读 · 0 评论 -
Leetcode前缀和B系列,LC930和相同的二元子数组;LC1248统计优美子数组
leetcode前缀和leetcode930,leetcode1248原创 2022-06-13 10:28:49 · 246 阅读 · 0 评论 -
leetcode前缀和A系列,leetcode 1 两数之和 560和为k的子数组的个数 325和等于k的最长子数组长度 1658 将x 减到0的最小操作数 209长度最小的子数组
关于前缀和概念的介绍,可以看这篇文章基本的思想就是对于一个长度为n的数组nums,如果我们要求其中下标l到r之间的元素的总和。用前缀和的思想就是,先记录s[1],s[2]…s[n]的值,然后在求l到r之间元素和的时候,用s[r]-s[l-1]即可。下面进入leetcode实战题目有LC 1 两数之和LC 560 和为k的子数组的个数LC 325 和等于k的最长子数组长度LC 1658 将x 减到0的最小操作数LC 209长度最小的子数组leetcode 1 两数之和class原创 2022-05-22 14:42:59 · 255 阅读 · 0 评论 -
大根堆解决数组topk元素问题leetcode215
调库大根堆class Solution: def findKthLargest(self, nums: List[int], k: int) -> int: maxHeap = [] for x in nums: heapq.heappush(maxHeap, -x) for _ in range(k - 1): heapq.heappop(maxHeap) return -max原创 2022-05-18 23:55:20 · 183 阅读 · 0 评论 -
leetcode双指针系列1: LC26删除有序数组中的重复项,LC674最长连续递增序列,LC27移除元素,LC80 删除有序数组中的重复项II,LC 283 移动零,LC75 颜色分类
双指针思想通常用来解决数组或者字符串的子序列问题,使用双指针,左指针指向当前已经处理好的序列的尾部,右指针指向待处理序列的头部。在循环中,判断条件都是右指针所在位置,如果满足,会对右指针位置进行处理,然后放到左指针位置。leetcode 26 删除有序数组中的重复项leetcode 75 颜色分类leetcode 80 删除有序数组中的重复项 IIleetcode 283 移动零都可以用上述的思想解决问题。即,确定好已经处理好的部分,和将要处理的部分。............原创 2022-05-18 21:09:16 · 314 阅读 · 0 评论 -
数组类问题思路,以leetcode873寻找最长斐波那契子序列和1027寻找最长等差数组为例
一般,数组问题中如果寻找满足某些要求的连续的子数组,可以优先考虑用双指针 或者滑动窗口的方法解决。双指针从广义上来说,是指用两个变量在线性结构上遍历而解决的问题。狭义上说,对于数组,指两个变量在数组上相向移动解决的问题;对于链表,指两个变量在链表上同向移动解决的问题,也称为「快慢指针」问题。双指针算法通常不难,双指针算法是基于暴力解法的优化,而对于寻找满足某些要求的不连续子数组,最好考虑动态规划,一维,二维动态规划都经常用到。重要的是找到迭代公式以及限制条件,比如leetcode873寻找最长斐波原创 2022-05-11 11:08:31 · 230 阅读 · 0 评论 -
leetcode 198、213 打家劫舍 Python3
leetcode 198 打家劫舍你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。给定一个代表每个房屋存放金额的非负整数数组,计算你 不触动警报装置的情况下 ,一夜之内能够偷窃到的最高金额。class Solution: def rob(self, nums: List[int]) -> int: # [1,99,1,1,1] 偷的房屋多原创 2022-05-06 18:16:02 · 247 阅读 · 0 评论 -
Lintcode 两数之和 系列
Lintcode 56 两数之和给一个整数数组,找到两个数使得他们的和等于一个给定的数 target。你需要实现的函数twoSum需要返回这两个数的下标, 并且第一个下标小于第二个下标。注意这里下标的范围是 0 到 n-1。样例给出 numbers = [2, 7, 11, 15], target = 9, 返回 [0, 1].分析:这题目很简单,两数之间已经有了确定的映射关系,直接用......原创 2018-10-02 21:07:48 · 495 阅读 · 0 评论 -
leetcode912 快速排序,leetcode215 leetcode378 快速选择排序求第k小元素 Python3
快速排序(快排)和快速选择排序,是两种平均时间复杂度非常高效的算法,其中: 快排平均时间复杂度是O(nlogn),最坏时间复杂度是O(n2n2n^2); 快速选择排序的平均时间复杂度是O(n),最坏时间复杂度是O(n2n2n^2); 排序思想可参考 图文并茂的快排解释 两个函数的python实现如下:def swap(nums,i,j): if i==j: ...原创 2018-09-14 04:00:46 · 597 阅读 · 0 评论 -
Lintcode 买卖股票的最佳时机 系列问题1,2,3
题目1 假设有一个数组,它的第i个元素是一支给定的股票在第i天的价格。如果你最多只允许完成一次买入和卖出,设计一个算法来找出最大利润。 样例 给出一个数组样例 [3,2,3,1,2], 返回 1 def maxProfit(self, prices): # write your code here n=len(prices) if n=...原创 2018-09-10 22:29:16 · 309 阅读 · 0 评论 -
Lintcode 最大子数组 系列问题
给定一个整数数组,找到一个具有最大和的子数组,返回其最大和。样例 给出数组[−2,2,−3,4,−1,2,1,−5,3],符合要求的子数组为[4,−1,2,1],其最大和为6挑战 要求时间复杂度为O(n)def max_sub(nums): current_sum=0 total_sum=num[0] for num in nums: c...原创 2018-09-10 05:04:25 · 194 阅读 · 0 评论 -
Leetcode 912 合并排序 Python
合并两个排序的整数数组A和B变成一个新的数组。 样例 给出A=[1,2,3,4],B=[2,4,5,6],返回 [1,2,2,3,4,4,5,6]分析 题目中的两个数组已经是有序的了,所以只需要依次取出其中的数字添加到新数组,谁先被取完,将另一个数组中剩下的数字添加到新数组。def merge_sort(a,b): lenA,lenB=len(a),len(b) i...原创 2018-09-06 05:37:07 · 305 阅读 · 0 评论 -
leetcode 33、34、35 各种条件下的二分查找小结 Python
二分查找使用有两个条件表必须有序(增或减,可包含重复值)表必须为顺序存储结构用起来的时候情况很多,但是都可以根据一个基本架构来稍微改变条件def bs0(nums,target): l,r=0,len(nums)-1 while(l<=r): m=l+((r-l)/2)>>2 #话说之前这里掉了个括号。。。 if(...原创 2018-05-16 18:22:36 · 274 阅读 · 0 评论 -
BFS在二叉树层序遍历,最短路径问题的应用【Python】
灵感来源 leetcode题解由于上述题解都是基于java,而python的TreeNode不太一样,所以我这里重新组织一下。如果我们使用 DFS/BFS 只是为了遍历一棵树、一张图上的所有结点的话,那么 DFS 和 BFS 的能力没什么差别,我们当然更倾向于更方便写、空间复杂度更低的 DFS 遍历。不过,某些使用场景是 DFS 做不到的,只能使用 BFS 遍历。这就是本文要介绍的两个场景:「层序遍历」、「最短路径」。本文包括以下内容:DFS 与 BFS 的特点比较BFS 的适用场景如何用 B原创 2022-04-06 11:01:04 · 700 阅读 · 0 评论 -
leetcode 【路径之和112 113 所有路径257】Python
**leetcode 112**是给定特定int类型targetSum,返回是否存在一条路径使得路径上所有节点的和等于targetSum。**leetcode 113**也是给定特定int类型targetSum,返回所有和等于targetSum的路径。**leetcode 257**是返回二叉树的所有路径,路径表达形式是字符串’1->2->3’这样说实话我觉得BFS的模板比DFS的模板简单,毕竟递归总是推理起来麻烦一些第一句que=deque([ (root , xxx yyy) ])原创 2022-03-09 20:12:14 · 873 阅读 · 0 评论 -
leetcode113【路径之和II】Python
路径问题BFS和DFS模板给你二叉树的根节点 root 和一个整数目标和 targetSum ,找出所有 从根节点到叶子节点 路径总和等于给定目标和的路径。叶子节点 是指没有子节点的节点。实例1输入:root = [5,4,8,11,null,13,4,7,2,null,null,5,1], targetSum = 22输出:[[5,4,11,2],[5,8,4,5]]实例2输入:root = [1,2,3], targetSum = 5输出:[]其实轮模板,我觉得BFS的模板是比原创 2022-03-09 19:17:54 · 1261 阅读 · 0 评论 -
leetcode 257【二叉树的所有路径】Python
给你一个二叉树的根节点 root ,按 任意顺序 ,返回所有从根节点到叶子节点的路径。叶子节点 是指没有子节点的节点。示例 1:输入:root = [1,2,3,null,5]输出:["1->2->5","1->3"]# class TreeNode:# def __init__(self, val=0, left=None, right=None):# self.val = val# self.left = left#原创 2022-03-09 10:11:50 · 224 阅读 · 0 评论