leetcode
文章平均质量分 56
wake_alone
这个作者很懒,什么都没留下…
展开
-
leetcode 4. 寻找两个正序数组的中位数
给定两个大小分别为 m 和 n 的正序(从小到大)数组 nums1 和 nums2。请你找出并返回这两个正序数组的 中位数 。算法的时间复杂度应该为 O(log (m+n)) 。示例 1:输入:nums1 = [1,3], nums2 = [2] 输出:2.00000 解释:合并数组 = [1,2,3] ,中位数 2 示例2:输入:nums1 = [1,2], nums2 = [3,4] 输出:2.50000 解释:合并数组 = [1,2,3,4] ,中位数 (2 + 3) / 2 = 2.5.转载 2022-05-19 10:23:37 · 204 阅读 · 1 评论 -
leetcode 142. 环形链表 II
给定一个链表,返回链表开始入环的第一个节点。 如果链表无环,则返回 null。为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是-1,则在该链表中没有环。注意,pos 仅仅是用于标识环的情况,并不会作为参数传递到函数中。说明:不允许修改给定的链表。进阶:你是否可以使用 O(1) 空间解决此题?思路快慢指针,相遇后再从头去执行/** * Definition for singly-linked list. * class.原创 2021-08-09 18:29:44 · 190 阅读 · 0 评论 -
leetcode 11. 盛最多水的容器
盛最多水的容器 给你 n 个非负整数 a1,a2,…,an,每个数代表坐标中的一个点 (i, ai) 。在坐标内画 n 条垂直线,垂直线 i 的两个端点分别为 (i, ai) 和 (i, 0) 。找出其中的两条线,使得它们与 x轴共同构成的容器可以容纳最多的水。说明:你不能倾斜容器。示例 1:输入:[1,8,6,2,5,4,8,3,7] 输出:49 解释:图中垂直线代表输入数组[1,8,6,2,5,4,8,3,7]。在此情况下,容器能够容纳水(表示为蓝色部分)的最大值为 49。 示..原创 2021-08-08 15:18:35 · 368 阅读 · 0 评论 -
leetcode496 503 下一个更大的元素 Ⅰ Ⅱ Ⅲ
leetcode496 下一个更大的元素Ⅰ给你两个 没有重复元素 的数组 nums1 和 nums2 ,其中nums1 是 nums2 的子集。请你找出 nums1 中每个元素在 nums2 中的下一个比其大的值。nums1 中数字 x 的下一个更大元素是指 x 在 nums2 中对应位置的右边的第一个比 x 大的元素。如果不存在,对应位置输出 -1 。示例 1:输入: nums1 = [4,1,2], nums2 = [1,3,4,2]. 输出: [-1,3,-1] 解释:对于 num1原创 2021-07-24 00:13:03 · 211 阅读 · 0 评论 -
leetcode 下一个更大元素 III
给你一个正整数 n ,请你找出符合条件的最小整数,其由重新排列 n 中存在的每位数字组成,并且其值大于 n 。如果不存在这样的正整数,则返回 -1 。注意 ,返回的整数应当是一个 32 位整数 ,如果存在满足题意的答案,但不是 32 位整数 ,同样返回 -1 。示例 1:输入:n = 12 输出:21 示例 2:输入:n = 21 输出:-1思路从右往左找到降序的位置i因为从i+1到length-1已经是升序了再从右往左找到大于a[i]的位置j替换a[i]和a[j]现在已经满足更大的.原创 2021-07-21 19:34:32 · 165 阅读 · 0 评论 -
最长回文子串
给你一个字符串 s,找到 s 中最长的回文子串。示例 1:输入:s = “babad” 输出:“bab” 解释:“aba” 同样是符合题意的答案。 示例 2:输入:s = “cbbd” 输出:“bb” 示例 3:输入:s = “a” 输出:“a” 示例 4:输入:s = “ac” 输出:“a”思路动态规划dp[i][j] 表示 s[i…j] 是否是回文串dp[i][j] = dp[i + 1][j - 1];class Solution { public String lon.原创 2021-07-21 18:39:01 · 65 阅读 · 0 评论 -
圆环回原点问题
圆环上有10个点,编号为0~9。从0点出发,每次可以逆时针和顺时针走一步,问走n步回到0点共有多少种走法。输入: 2输出: 2解释:有2种方案。分别是0->1->0和0->9->0走i步走到j的有n中方法 等于 {走i-1步到 j-1} + {走 i-1步到j+1}dp[i][j] = dp[i-1][j-1] + dp[i-1][j+1];因为有回环,所以需要走到j-1可能为负数dp[i][j] = dp[i-1][(j-1+length)%length] .原创 2021-07-20 01:03:04 · 677 阅读 · 0 评论 -
leetcode146. LRU缓存机制
LRU缓存机制运用你所掌握的数据结构,设计和实现一个 LRU (最近最少使用) 缓存机制。它应该支持以下操作: 获取数据 get 和 写入数据 put 。获取数据 get(key) - 如果关键字 (key) 存在于缓存中,则获取关键字的值(总是正数),否则返回 -1。写入数据 put(key, value) - 如果关键字已经存在,则变更其数据值;如果关键字不存在,则插入该组「关键字/值」。当缓存容量达到上限时,它应该在写入新数据之前删除最久未使用的数据值,从而为新的数据值留出空间。进阶:.原创 2020-10-25 14:12:01 · 117 阅读 · 0 评论 -
leetcode133. 克隆图
克隆图给你无向 连通 图中一个节点的引用,请你返回该图的 深拷贝(克隆)。图中的每个节点都包含它的值 val(int) 和其邻居的列表(list[Node])。class Node {public int val;public List neighbors;}测试用例格式:简单起见,每个节点的值都和它的索引相同。例如,第一个节点值为 1(val = 1),第二个节点值为 2(val = 2),以此类推。该图在测试用例中使用邻接列表表示。邻接列表 是用于表示有限图的无序列表的集合。每个列.原创 2020-09-15 22:10:53 · 113 阅读 · 0 评论 -
leetcode80. 删除排序数组中的重复项 II
给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素最多出现两次,返回移除后数组的新长度。不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。示例 1:给定 nums = [1,1,1,2,2,3],函数应返回新长度 length = 5, 并且原数组的前五个元素被修改为 1, 1, 2, 2, 3 。你不需要考虑数组中超出新长度后面的元素。示例 2:给定 nums = [0,0,1,1,1,1,2,3,3],函数应返回新长度 length =原创 2020-09-14 23:23:38 · 220 阅读 · 0 评论 -
leetcode79. 单词搜索
给定一个二维网格和一个单词,找出该单词是否存在于网格中。单词必须按照字母顺序,通过相邻的单元格内的字母构成,其中“相邻”单元格是那些水平相邻或垂直相邻的单元格。同一个单元格内的字母不允许被重复使用。示例:board =[[‘A’,‘B’,‘C’,‘E’],[‘S’,‘F’,‘C’,‘S’],[‘A’,‘D’,‘E’,‘E’]]给定 word = “ABCCED”, 返回 true给定 word = “SEE”, 返回 true给定 word = “ABCB”, 返回 falsecla原创 2020-09-14 22:31:00 · 88 阅读 · 0 评论 -
leetcode643. 子数组最大平均数 I
给定 n 个整数,找出平均数最大且长度为 k 的连续子数组,并输出该最大平均数。示例 1:输入: [1,12,-5,-6,50,3], k = 4输出: 12.75解释: 最大平均数 (12-5-6+50)/4 = 51/4 = 12.75注意:1 <= k <= n <= 30,000。 所给数据范围 [-10,000,10,000]。思路:滑...原创 2018-09-07 13:19:03 · 209 阅读 · 0 评论 -
leetcode45. 跳跃游戏Ⅱ
给定一个非负整数数组,你最初位于数组的第一个位置。数组中的每个元素代表你在该位置可以跳跃的最大长度。你的目标是使用最少的跳跃次数到达数组的最后一个位置。示例:输入: [2,3,1,1,4]输出: 2解释: 跳到最后一个位置的最小跳跃数是 2。 从下标为 0 跳到下标为 1 的位置,跳 1 步,然后跳 3 步到达数组的最后一个位置。说明:假设你总是可以到达数组...原创 2018-08-14 15:02:23 · 1840 阅读 · 0 评论 -
leetcode55. 跳跃游戏
给定一个非负整数数组,你最初位于数组的第一个位置。数组中的每个元素代表你在该位置可以跳跃的最大长度。判断你是否能够到达最后一个位置。示例 1:输入: [2,3,1,1,4]输出: true解释: 从位置 0 到 1 跳 1 步, 然后跳 3 步到达最后一个位置。示例 2:输入: [3,2,1,0,4]输出: false解释: 无论怎样,你总会到达索引为 3 的...原创 2018-08-14 13:37:30 · 348 阅读 · 0 评论 -
leetcode19. 删除链表的倒数第N个节点
给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点。示例:给定一个链表: 1->2->3->4->5, 和 n = 2.当删除了倒数第二个节点后,链表变为 1->2->3->5.说明:给定的 n 保证是有效的。进阶:你能尝试使用一趟扫描实现吗?思路1:可以循环两次,第一次找到倒数第N个,第二次循环删...原创 2018-07-22 15:50:17 · 115 阅读 · 0 评论 -
leetcode70. 爬楼梯
假设你正在爬楼梯。需要 n 步你才能到达楼顶。每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?注意:给定 n 是一个正整数。示例 1:输入: 2输出: 2解释: 有两种方法可以爬到楼顶。1. 1 步 + 1 步2. 2 步示例 2:输入: 3输出: 3解释: 有三种方法可以爬到楼顶。1. 1 步 + 1 步 + 1 步2. ...原创 2018-07-22 14:17:29 · 88 阅读 · 0 评论 -
leetcode98. 验证二叉搜索树
给定一个二叉树,判断其是否是一个有效的二叉搜索树。一个二叉搜索树具有如下特征:节点的左子树只包含小于当前节点的数。 节点的右子树只包含大于当前节点的数。 所有左子树和右子树自身必须也是二叉搜索树。示例 1:输入: 2 / \ 1 3输出: true示例 2:输入: 5 / \ 1 4 / \ 3 6...原创 2018-07-20 16:09:24 · 642 阅读 · 0 评论 -
leetcode15. 三数之和
给定一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?找出所有满足条件且不重复的三元组。注意:答案中不可以包含重复的三元组。例如, 给定数组 nums = [-1, 0, 1, 2, -1, -4],满足要求的三元组集合为:[ [-1, 0, 1], [-1, -1, 2]]思路:先找两数之...原创 2018-07-20 14:59:06 · 170 阅读 · 0 评论 -
leetcode322.零钱兑换
给定不同面额的硬币 coins 和一个总金额 amount。编写一个函数来计算可以凑成总金额所需的最少的硬币个数。如果没有任何一种硬币组合能组成总金额,返回 -1。示例 1:输入: coins = [1, 2, 5], amount = 11输出: 3 解释: 11 = 5 + 5 + 1示例 2:输入: coins = [2], amount = 3输出: -1说明:你可以认为每种硬币的数...原创 2018-07-16 10:53:01 · 2436 阅读 · 0 评论 -
leetcode2 两数相加
题目:给定两个非空链表来表示两个非负整数。位数按照逆序方式存储,它们的每个节点只存储单个数字。将两数相加返回一个新的链表。你可以假设除了数字 0 之外,这两个数字都不会以零开头。示例:输入:(2 -> 4 -> 3) + (5 -> 6 -> 4)输出:7 -> 0 -> 8原因:342 + 465 = 807思路:逆序为我们提供了便利进位的处理踩的坑:必...原创 2018-07-03 16:10:53 · 557 阅读 · 0 评论 -
leetcode686. 重复叠加字符串匹配---kmp讲解
https://blog.csdn.net/v_july_v/article/details/7041827#t10KMP: 假设现在我们面临这样一个问题:有一个文本串S,和一个模式串P, 假设现在我们面临这样一个问题:有一个文本串S,和一个模式串P,现在要查找P在S中的位置,怎么查找呢?文本串S“BBC ABCDAB ABCDABCDABDE”,和模式串P“ABCDABD”。...原创 2018-07-16 17:16:06 · 353 阅读 · 0 评论 -
leetcode300. 最长上升子序列
给定一个无序的整数数组,找到其中最长上升子序列的长度。示例:输入: [10,9,2,5,3,7,101,18]输出: 4 解释: 最长的上升子序列是 [2,3,7,101],它的长度是 4。说明:可能会有多种最长上升子序列的组合,你只需要输出对应的长度即可。 你算法的时间复杂度应该为 O(n2) 。进阶: 你能将算法的时间复杂度降低到 O(n log n) 吗?典型的...原创 2018-07-16 22:16:44 · 242 阅读 · 0 评论 -
leetcode3 无重复字符的最长子串
先说结论:自己没做出来,抄的别人的。https://www.cnblogs.com/ariel-dreamland/p/8668286.html给定一个字符串,找出不含有重复字符的最长子串的长度。示例:给定"abcabcbb",没有重复字符的最长子串是"abc",那么长度就是3。给定"bbbbb",最长的子串就是"b",长度是1。给定"pwwkew"...原创 2018-07-04 15:58:08 · 220 阅读 · 0 评论 -
leetcode106. 从中序与后序遍历序列构造二叉树
根据一棵树的中序遍历与后序遍历构造二叉树。注意:你可以假设树中没有重复的元素。例如,给出中序遍历 inorder = [9,3,15,20,7]后序遍历 postorder = [9,15,7,20,3]返回如下的二叉树: 3 / \ 9 20 / \ 15 7思路:递归的思想后序的最后一个就是根节点,在中序里面找到这个...原创 2018-07-23 11:20:02 · 1071 阅读 · 0 评论 -
leetcode105. 从前序与中序遍历序列构造二叉树Construct BinaryTree From Preorder And Inorder Traversal
根据一棵树的前序遍历与中序遍历构造二叉树。注意:你可以假设树中没有重复的元素。例如,给出前序遍历 preorder = [3,9,20,15,7]中序遍历 inorder = [9,3,15,20,7]返回如下的二叉树: 3 / \ 9 20 / \ 15 7思路:前序第一个是根节点,然后根据中序的根节点位置,可以将树变成左右两棵子树。然后递归是否为空?ne...原创 2018-07-11 14:55:41 · 133 阅读 · 0 评论 -
leecode338. Bit位计数
给定一个非负整数 num。 对于范围 0 ≤ i ≤ num 中的每个数字 i ,计算其二进制数中的1的数目并将它们作为数组返回。示例:比如给定 num = 5 ,应该返回 [0,1,1,2,1,2].进阶:给出时间复杂度为O(n * sizeof(integer)) 的解答非常容易。 但是你可以在线性时间O(n)内用一次遍历做到吗? 要求算法的空间复杂度为O(n)。 你能进一步...原创 2018-07-23 14:28:16 · 189 阅读 · 0 评论 -
leetcode542. 01 矩阵
给定一个由 0 和 1 组成的矩阵,找出每个元素到最近的 0 的距离。两个相邻元素间的距离为 1 。示例 1: 输入:0 0 00 1 00 0 0输出:0 0 00 1 00 0 0示例 2: 输入:0 0 00 1 01 1 1输出:0 0 00 1 01 2 1注意:给定矩阵的元素个数不超过 10000。 给定...原创 2018-07-23 21:53:29 · 625 阅读 · 0 评论 -
leetcode717. 1比特与2比特字符
有两种特殊字符。第一种字符可以用一比特0来表示。第二种字符可以用两比特(10 或 11)来表示。现给一个由若干比特组成的字符串。问最后一个字符是否必定为一个一比特字符。给定的字符串总是由0结束。示例 1:输入: bits = [1, 0, 0]输出: True解释: 唯一的编码方式是一个两比特字符和一个一比特字符。所以最后一个字符是一比特字符。示例 2:输入: ...原创 2018-07-24 10:38:26 · 315 阅读 · 0 评论 -
leetcode64. 最小路径和---动态规划
给定一个包含非负整数的 m x n 网格,请找出一条从左上角到右下角的路径,使得路径上的数字总和为最小。说明:每次只能向下或者向右移动一步。示例:输入:[ [1,3,1], [1,5,1], [4,2,1]]输出: 7解释: 因为路径 1→3→1→1→1 的总和最小。 思路:状态方程为:S[i][j]=A[i][j] + min(S[i-1...原创 2018-07-19 10:13:35 · 673 阅读 · 0 评论 -
leetcode94.144.145二叉树遍历---前中后(递归,非递归)---C++/Java 实现
二叉树:前序: 1-2-4-8-5-9-3-6-10-7 根左右中序: 8-4-2-5-9-1-6-10-3-7 左根右后序列: 8-4-9-5-2-10-6-7-3-1 左右根递归实现#include <iostream>#include <stack>#include <list>...原创 2018-07-19 16:36:36 · 189 阅读 · 0 评论 -
leetcode102,107. 二叉树的层次遍历
给定一个二叉树,返回其按层次遍历的节点值。 (即逐层地,从左到右访问所有节点)。例如:给定二叉树: [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7返回其层次遍历结果:[ [3], [9,20], [15,7]] 思路:借用队列,这道题目因为要求用二位vector进行处理...原创 2018-07-20 10:01:46 · 219 阅读 · 0 评论 -
leetcode257. 二叉树的所有路径
给定一个二叉树,返回所有从根节点到叶子节点的路径。说明: 叶子节点是指没有子节点的节点。示例:输入: 1 / \2 3 \ 5输出: ["1->2->5", "1->3"]解释: 所有根节点到叶子节点的路径为: 1->2->5, 1->3 思路:自己做的比较麻烦,建议直接看后面的我的思路还...原创 2018-07-20 11:27:26 · 1325 阅读 · 0 评论 -
leetcode1 两数之和
dsadsa1.两数之和原创 2018-07-02 16:35:33 · 163 阅读 · 0 评论