
leetcode
云霞川
这个作者很懒,什么都没留下…
展开
-
lc marathon 10.7
[420. 找到所有好下标](https://leetcode.cn/problems/find-all-good-indices/)[1629. 按键持续时间最长的键原创 2022-10-07 15:07:11 · 117 阅读 · 0 评论 -
1094. 拼车-M-95.18%
关键点以时间点的角度 解决这道题在有乘客上下车时,车上的人才会变化,才会有false的可能因此我们应该把每个时间点总结成 增加了多少人,减少了多少人例子[[2,1,5],[3,5,7]] capacity = 31时间点 :上车2人5时间点:下车2人,上车3人7时间点:下车3人然后拿着capacity = 3 顺序过时间点保证每个时间点 不超过容量 即可代码def carPooling(trips, capacity): """ :type trips: List..原创 2021-07-26 23:21:56 · 99 阅读 · 0 评论 -
98. 验证二叉搜索树-M-90.94%
关键点中序遍历输出看是不是有序的代码class Solution(object): def isValidBST(self,root): """ :type root: TreeNode :rtype: bool """ q=[] def zcc(root): if root.left!=None: zcc(root.left) .原创 2021-07-25 11:47:23 · 108 阅读 · 0 评论 -
1817. 查找用户活跃分钟数-M-94.44%
数据结构使用一个字典存储,key是id,value是set(),存储该id进行操作的分钟大神器from collections import defaultdictd = defaultdict(set)字典默认值为set,这样接下来就可以减少查询和判断操作假如没有用 defaultdictdef findingUsersActiveMinutes(logs, k): """ :type logs: List[List[int]] :type k: int .原创 2021-07-24 17:59:44 · 164 阅读 · 0 评论 -
299. 猜数字游戏-M-68.97%
关键点分两步,首先对比字符串相同位置上的数算出bull,并且将相同位置且相同的数字直接删除第二步根据secret构建map {数字:数目}遍历guess:每当在map中的keys找到相同数字,且数目大于0,则cow+=1,并且将数字-1,最终得到cow值举例secret:1198770guess:1238970第一步:算出bull值,删除相同位置且相同的数字bull=4secret:197guess:239第二步:为secret建立map{数字:数目}{1:1,9:1,7:1}.原创 2021-07-19 16:46:09 · 139 阅读 · 1 评论 -
739. 每日温度-M-42.08%
数据结构采用单调栈,要求单调递减关键点遍历温度数组,若当前数字小于或等于栈顶数字,则入栈否则,弹出栈顶数字,并对弹出数字进行标注(当前数字是第一个比它大的)举例link代码def dailyTemperatures(temperatures): """ :type temperatures: List[int] :rtype: List[int] """ stack=[] num=[0 for _ in range(len(temperatu.原创 2021-07-17 22:43:58 · 79 阅读 · 1 评论 -
892. 三维形体的表面积-M-70.31%
关键点进一个房间 删除已经用过的钥匙从房间拿钥匙时 只拿还没开房门的钥匙举例[[1,3],[3,0,1],[2],[0]]有钥匙0,进入0房间,扔掉钥匙0,拿到钥匙1和3利用钥匙1和3进入1房间和3房间,扔掉钥匙1和3,拿不到未开房门的钥匙没有钥匙了,发现房间二没开门返回false代码class Solution(object): def canVisitAllRooms(self, rooms): """ :type rooms: Lis..原创 2021-07-16 22:10:31 · 62 阅读 · 0 评论 -
892. 三维形体的表面积-E-82.35%
关键点考虑有多少个面被遮挡举例如1 23 4首先考虑竖面遮挡:1与2之间被遮挡了2面1与3之间被遮挡了2面2与4之间被遮挡了4面4与3之间被遮挡了6面2*min(M,N)其次考虑横面被遮挡1没有2有2面被遮挡3有4面被遮挡4有6面被遮挡2*(N-1)sum*6-被遮挡的面数 即可代码class Solution(object): def surfaceArea(self, grid): """ :t...原创 2021-07-16 21:28:18 · 84 阅读 · 0 评论 -
1509. 三次操作后最大值与最小值的最小差-M-88.89%
关键点排序后的前四个数 一定有一个是下界同时对称 排序后的后四个数 一定有一个是上界(但发现对称,也就是只有4个情况)数据结构排序后构建 分别以 前四个数为下界 的 最大值与最小值的最小差 的 数组返回数组中的最小值举例如 83 2 32 43 54 37 80排序后 2 32 37 43 54 80 83以2为下界,最大值与最小值的最小差为 41 (54,80,83 全变成小于等于43的)以32为下界 ,最大值与最小值的最小差为 22(2变成大于等于32.原创 2021-07-15 22:53:18 · 462 阅读 · 2 评论 -
738. 单调递增的数字
分析(自定义概念)1.降点==从左往右第一个右边比它小的点如 893 中的9如 1234561 中的 62.最远相似点==一段数字完全相同序列的最左边的点如22222的 第一个2为 该序列所有的2的最远相似点如3333334 的 第一个3 该序列所有的2的最远相似点如 11122223333 的第一个 1 该序列所有的1的最远相似点(规律)在存在降点的情况下,找到数字序列的降点的最远相似点,将该位自减1,同时该位后面全变成9(举例,请试试这个规律)2不存.原创 2021-07-13 21:14:47 · 449 阅读 · 2 评论 -
leetcode日常 4.20
4.20面试题32 - III. 从上到下打印二叉树 III思路:先存下各层树的层次遍历节点,再按照s型遍历这些节点的值保存下来代码:/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode r...原创 2020-04-21 09:52:03 · 173 阅读 · 0 评论 -
兔系刷题leetcode系列之四 区间合并
区间合并核心:其核心是区间,区间这一对象的表示,区间的排序,区间的合并,这都是我们关心且要熟练掌握的问题,在这方面分类讨论是一个很清晰的方法。第一道 合并区间思路:代码:class Solution { public static class Interval { int a; int b; public Interval(int a,int b) { ...原创 2020-04-02 14:46:39 · 256 阅读 · 0 评论 -
兔系刷题leetcode系列之三 快慢指针
快慢指针文章目录快慢指针常见模式第一道 环形链表思路:与龟兔赛跑的不同:代码:第二道 环形链表思路:代码:第三道 链表的中间结点思路...原创 2020-03-31 11:02:27 · 232 阅读 · 0 评论 -
兔系刷刷leetcode系列之一 滑动窗口
滑动窗口的真实奥秘一个窗口在数组上缓缓滑动奥妙的是下一个窗口可以借鉴上一个窗口的值字符串常用map存字母对应的位置1. Maximum Sum Subarray of Size K (easy)解决问题思路:构建一个滑动窗口,在数组上缓缓滑动,下一个窗口的值是上一个窗口的值减去滑出的值,加上滑入的值。从而从暴力的O(N*K)变成O(N)代码:public static int f...原创 2020-03-28 23:22:40 · 293 阅读 · 0 评论 -
20. 有效的括号
用栈存 遇到左括号存进去 遇到右括号若和栈顶匹配 则消去 否则returnfalse若最后栈为空 则return trueclassSolution{publicstaticbooleanright(chara,charb){if((a=='('&&b==')')||(a=='['&&b=='...原创 2020-01-17 12:27:19 · 192 阅读 · 0 评论 -
24. 两两交换链表中的节点
思路:先构造翻转前k个结点 并返回头结点和尾结点的功能函数 然后思路就简单了/***Definitionforsingly-linkedlist.*publicclassListNode{*intval;*ListNodenext;*ListNode(intx){val=x;...原创 2020-01-17 12:24:54 · 158 阅读 · 0 评论 -
24. 两两交换链表中的节点
/***Definitionforsingly-linkedlist.*publicclassListNode{*intval;*ListNodenext;*ListNode(intx){val=x;}*}*/classSolution{publicListNode...原创 2020-01-17 12:21:37 · 167 阅读 · 0 评论 -
3. 无重复字符的最长子串
思路:采用滑动窗口 复杂度o(n2)classSolution{publicintlengthOfLongestSubstring(Strings){intn=s.length();if(n==1){return1;...原创 2020-01-15 10:28:36 · 168 阅读 · 0 评论 -
23. 合并K个排序链表
题目:合并 k 个排序链表,返回合并后的排序链表。请分析和描述算法的复杂度。示例:输入:[ 1->4->5, 1->3->4, 2->6]输出: 1->1->2->3->4->4->5->6思路:采用分治法,利用两两合并函数代码:classSolution{pub...原创 2020-01-05 13:48:42 · 152 阅读 · 0 评论 -
21. 合并两个有序链表
题目:将两个有序链表合并为一个新的有序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。示例:输入:1->2->4, 1->3->4输出:1->1->2->3->4->4思路:用p q两个指针遍历l1 l2链表若p.val<=q.val 存p的值 p往后移动一个>时 存q的值 q往后移动一...原创 2020-01-04 09:43:26 · 456 阅读 · 0 评论 -
5. 最长回文子串
题目:给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为 1000。示例 1:输入: "babad"输出: "bab"注意: "aba" 也是一个有效答案。示例 2:输入: "cbbd"输出: "bb"思路:采用中心扩散的思想 遍历该字符串遍历某字母时,若两边相同则继续扩散 直至不同在遍历的过程中保存最长的需注意 核心可...原创 2020-01-03 23:01:49 · 167 阅读 · 0 评论 -
13. 罗马数字转整数
题目描述:罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。字符 数值I 1V 5X 10L 50C 100D 500M 1000例如, 罗马数字 2 写做 II ,即为两...原创 2020-01-03 09:20:27 · 187 阅读 · 0 评论 -
19. 删除链表的倒数第N个节点
题目:给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点。示例:给定一个链表: 1->2->3->4->5, 和 n = 2.当删除了倒数第二个节点后,链表变为 1->2->3->5.说明:给定的 n 保证是有效的。进阶:你能尝试使用一趟扫描实现吗?解题思路:链表快慢指针,快指针先走n步,然后快慢一...原创 2020-01-01 11:35:12 · 208 阅读 · 0 评论 -
leetcode 2. 两数相加
题目:给出两个 非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字。如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。您可以假设除了数字 0 之外,这两个数都不会以 0 开头。示例:输入:(2 -> 4 -> 3) + (5 -> 6 -> 4)输出:7 ->...原创 2020-01-01 10:50:38 · 173 阅读 · 0 评论 -
7. 整数反转
题目:给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。示例 1:输入: 123输出: 321示例 2:输入: -123输出: -321示例 3:输入: 120输出: 21注意:假设我们的环境只能存储得下 32 位的有符号整数,则其数值范围为 [−231, 231 − 1]。请根据这个假设,如果反转后整数溢出那么就返回 0。解...原创 2020-01-01 10:50:23 · 305 阅读 · 0 评论 -
611. 有效三角形的个数
题目详述611. 有效三角形的个数给定一个包含非负整数的数组,你的任务是统计其中可以组成三角形三条边的三元组个数。示例 1:输入: [2,2,3,4]输出: 3解释:有效的组合是:2,3,4 (使用第一个 2)2,3,4 (使用第二个 2)2,2,3 二.自我探寻三层循环嵌套?代码:int n=0; for(int i=n...原创 2019-02-19 09:05:21 · 362 阅读 · 0 评论 -
667. 优美的排列 II
给定两个整数 n 和 k,你需要实现一个数组,这个数组包含从 1 到 n 的 n 个不同整数,同时满足以下条件:① 如果这个数组是 [a1, a2, a3, ... , an] ,那么数组 [|a1 - a2|, |a2 - a3|, |a3 - a4|, ... , |an-1 - an|] 中应该有且仅有 k 个不同整数;.② 如果存在多种答案,你只需实现并返回其中任意一种.示例 ...原创 2019-02-24 20:15:03 · 480 阅读 · 0 评论 -
670. 最大交换
题目详述670. 最大交换给定一个非负整数,你至多可以交换一次数字中的任意两位。返回你能得到的最大值。示例 1 :输入: 2736输出: 7236解释: 交换数字2和数字7。示例 2 :输入: 9973输出: 9973解释: 不需要交换。注意:给定数字的范围是 [0, 108] 二.自我探寻(较慢)思路:用一个list 把数分解了然后存进去,...原创 2019-02-25 09:29:32 · 544 阅读 · 0 评论 -
289. 生命游戏
题目详述根据百度百科,生命游戏,简称为生命,是英国数学家约翰·何顿·康威在1970年发明的细胞自动机。给定一个包含 m × n 个格子的面板,每一个格子都可以看成是一个细胞。每个细胞具有一个初始状态 live(1)即为活细胞, 或 dead(0)即为死细胞。每个细胞与其八个相邻位置(水平,垂直,对角线)的细胞都遵循以下四条生存定律:如果活细胞周围八个位置的活细胞数少于两个,则该位置活细胞...原创 2019-02-21 08:34:17 · 486 阅读 · 0 评论 -
665. 非递减数列
题目详述665. 非递减数列给定一个长度为 n 的整数数组,你的任务是判断在最多改变 1 个元素的情况下,该数组能否变成一个非递减数列。我们是这样定义一个非递减数列的: 对于数组中所有的 i (1 <= i < n),满足 array[i] <= array[i + 1]。示例 1:输入: [4,2,3]输出: True解释: 你可以通过把第一个4变成1...原创 2019-02-21 09:00:45 · 241 阅读 · 0 评论 -
238. 除自身以外数组的乘积
238. 除自身以外数组的乘积给定长度为 n 的整数数组 nums,其中 n > 1,返回输出数组 output ,其中 output[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积。示例:输入: [1,2,3,4]输出: [24,12,8,6]说明: 请不要使用除法,且在 O(n) 时间复杂度内完成此题。进阶:你可以在常数空间复杂度内完成这个题目...原创 2019-02-08 07:37:36 · 219 阅读 · 0 评论 -
55.跳跃数组
题目详述55. 跳跃游戏给定一个非负整数数组,你最初位于数组的第一个位置。数组中的每个元素代表你在该位置可以跳跃的最大长度。判断你是否能够到达最后一个位置。示例 1:输入: [2,3,1,1,4]输出: true解释: 从位置 0 到 1 跳 1 步, 然后跳 3 步到达最后一个位置。示例 2:输入: [3,2,1,0,4]输出: false解释: 无...原创 2019-01-24 12:34:12 · 982 阅读 · 1 评论 -
605. 种花问题
题目详述605. 种花问题假设你有一个很长的花坛,一部分地块种植了花,另一部分却没有。可是,花卉不能种植在相邻的地块上,它们会争夺水源,两者都会死去。给定一个花坛(表示为一个数组包含0和1,其中0表示没种植花,1表示种植了花),和一个数 n 。能否在不打破种植规则的情况下种入 n 朵花?能则返回True,不能则返回False。示例 1:输入: flowerbed = [1,0,0...原创 2019-02-18 11:45:14 · 330 阅读 · 0 评论 -
581. 最短无序连续子数组
题目详述581. 最短无序连续子数组给定一个整数数组,你需要寻找一个连续的子数组,如果对这个子数组进行升序排序,那么整个数组都会变为升序排序。你找到的子数组应是最短的,请输出它的长度。示例 1:输入: [2, 6, 4, 8, 10, 9, 15]输出: 5解释: 你只需要对 [6, 4, 8, 10, 9] 进行升序排序,那么整个表都会变为升序排序。说明 :输入...原创 2019-02-18 08:46:22 · 171 阅读 · 0 评论 -
268. 缺失数字
题目详述268. 缺失数字给定一个包含 0, 1, 2, ..., n 中 n 个数的序列,找出 0 .. n 中没有出现在序列中的那个数。示例 1:输入: [3,0,1]输出: 2示例 2:输入: [9,6,4,2,3,5,7,0,1]输出: 8 二.自我探寻思路:自己思路比较慢(2-4ms) 可以直接看网络学习过程 最佳思路(1ms)比如 [9...原创 2019-02-02 10:55:03 · 170 阅读 · 0 评论 -
78.子集
题目详述78. 子集给定一组不含重复元素的整数数组 nums,返回该数组所有可能的子集(幂集)。说明:解集不能包含重复的子集。示例:输入: nums = [1,2,3]输出:[ [3], [1], [2], [1,2,3], [1,3], [2,3], [1,2], []] 二.自我探寻思路:构建树 然后采用...原创 2019-02-01 09:23:38 · 285 阅读 · 0 评论 -
74.搜索二维矩阵
题目详述74. 搜索二维矩阵编写一个高效的算法来判断 m x n 矩阵中,是否存在一个目标值。该矩阵具有如下特性:每行中的整数从左到右按升序排列。 每行的第一个整数大于前一行的最后一个整数。示例 1:输入:matrix = [ [1, 3, 5, 7], [10, 11, 16, 20], [23, 30, 34, 50]]target = ...原创 2019-02-01 08:36:34 · 277 阅读 · 0 评论 -
62.不同路径
题目详述62. 不同路径 一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为“Start” )。机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为“Finish”)。问总共有多少条不同的路径?例如,上图是一个7 x 3 的网格。有多少可能的路径?说明:m 和 n 的值均不超过 100。示例 1:输入: m = 3,...原创 2019-01-26 10:13:52 · 1073 阅读 · 0 评论 -
56.合并矩阵
题目详述 59. 螺旋矩阵 II给定一个正整数 n,生成一个包含 1 到 n2 所有元素,且元素按顺时针顺序螺旋排列的正方形矩阵。示例:输入: 3输出:[ [ 1, 2, 3 ], [ 8, 9, 4 ], [ 7, 6, 5 ]] 二.自我探寻 思路:跟之前写的螺旋矩阵一样,依然判断边界是否走过 然后改变方向 直到走到最后一个代码:c...原创 2019-01-25 17:24:24 · 277 阅读 · 0 评论