LeetCode
算法!!!
ysw!不将就
不将就
展开
-
Java,LeetCode 21. 合并两个有序链表
链表合并两个有序链表1. 题目描述难易度:简单将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。示例:输入:1->2->4, 1->3->4输出:1->1->2->3->4->4来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/merge-two-sorted-lists2. 思路分析遍历两个链表,每次取到两个结点的值进行比较创建新原创 2020-07-05 20:48:30 · 203 阅读 · 1 评论 -
Java,LeetCode 347. 前K个高频元素
堆前K个高频元素1. 题目描述难易度:中等给定一个非空的整数数组,返回其中出现频率前 k 高的元素。示例 1:输入: nums = [1,1,1,2,2,3], k = 2输出: [1,2]示例 2:输入: nums = [1], k = 1输出: [1]提示:1. 你可以假设给定的 k 总是合理的,且 1 ≤ k ≤ 数组中不相同的元素的个数。2. 你的算法的时间复杂度必须优于 O(n log n) , n 是数组的大小。3. 题目数据保证答案唯一,换句话说,数组中前 k 个高原创 2020-07-05 19:39:30 · 253 阅读 · 0 评论 -
Java,LeetCode 215. 数组中的第K个最大元素
堆数组中的第K个最大元素1. 题目描述难易度:中等在未排序的数组中找到第 k 个最大的元素。请注意,你需要找的是数组排序后的第 k 个最大的元素,而不是第 k 个不同的元素。示例 1:输入: [3,2,1,5,6,4] 和 k = 2输出: 5示例 2:输入: [3,2,3,1,2,4,5,5,6] 和 k = 4输出: 4来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/kth-largest-element-in-an-arra原创 2020-07-04 16:29:45 · 186 阅读 · 0 评论 -
Java,LeetCode 701. 二叉搜索树中的插入操作
树二叉搜索树中的插入操作1. 题目描述难易度:中等给定二叉搜索树(BST)的根节点和要插入树中的值,将值插入二叉搜索树。 返回插入后二叉搜索树的根节点。 保证原始二叉搜索树中不存在新值。注意,可能存在多种有效的插入方式,只要树在插入后仍保持为二叉搜索树即可。 你可以返回任意有效的结果。例如,给定二叉搜索树: 4 / \ 2 7 / \1 3和 插入的值: 5你可以返回这个二叉搜索树: 4 / \ 2 7 / \ /1原创 2020-07-04 16:13:15 · 3987 阅读 · 0 评论 -
Java,LeetCode 258. 各位相加
数学各位相加1. 题目描述难易度:简单给定一个非负整数 num,反复将各个位上的数字相加,直到结果为一位数。示例:输入: 38输出: 2解释: 各位相加的过程为:3 + 8 = 11, 1 + 1 = 2。 由于 2 是一位数,所以返回 2。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/add-digits2. 思路分析计算num每一位数字之和判断,如果满足条件则直接返回不满足条件则继续循环计算3. 代码演示/**原创 2020-06-28 17:36:36 · 182 阅读 · 0 评论 -
Java,LeetCode 14. 最长公共前缀
字符串,最长公共前缀1. 题目描述难易度:简单编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串 ""。示例 1:输入: [“flower”,“flow”,“flight”]输出: “fl”示例 2:输入: [“dog”,“racecar”,“car”]输出: “”解释: 输入不存在公共前缀。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/longest-common-prefix/2. 思路分析原创 2020-06-22 16:05:40 · 227 阅读 · 0 评论 -
Java,LeetCode 6. Z 字形变换
字符串,Z 字形变换1. 题目描述难易度:中等比如输入字符串为 “LEETCODEISHIRING” 行数为 3 时,排列如下:L C I RE T O E S I I GE D H N之后,你的输出需要从左往右逐行读取,产生出一个新的字符串,比如:“LCIRETOESIIGEDHN”。请你实现这个将字符串进行指定行数变换的函数:string convert(string s, int numRows);示例 1:输入: s = “LEETCODEISHIRI原创 2020-06-21 18:03:40 · 170 阅读 · 0 评论 -
Java,LeetCode 316. 去除重复字母
栈,去除重复字母1. 题目描述难易度:困难给你一个仅包含小写字母的字符串,请你去除字符串中重复的字母,使得每个字母只出现一次。需保证返回结果的字典序最小(要求不能打乱其他字符的相对位置)。示例 1:输入: “bcabc”输出: “abc”示例 2:输入: “cbacdcbc”输出: “acdb”来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/remove-duplicate-letters2. 思路分析以"bcabc"为例,首原创 2020-06-19 17:22:37 · 341 阅读 · 0 评论 -
Java,LeetCode 20. 有效括号
栈、字符串有效的括号1. 题目描述难易度:简单给定一个只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字符串,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。注意空字符串可被认为是有效字符串。示例 1:输入: “()”输出: true示例 2:输入: “()[]{}”输出: true示例 3:输入: “(]”输出: false示例 4:输入: “([)]”输出: false示例 5:输入: “{[]}”原创 2020-05-27 14:59:31 · 134 阅读 · 0 评论 -
Java,LeetCode 945. 使数组唯一的最小增量
数组使数组唯一的最小增量1. 题目描述难易度:中等给定整数数组 A,每次 move 操作将会选择任意 A[i],并将其递增 1。返回使 A 中的每个值都是唯一的最少操作次数。示例 1:输入:[1,2,2]输出:1解释:经过一次 move 操作,数组将变为 [1, 2, 3]。示例 2:输入:[3,2,1,2,1,7]输出:6解释:经过 6 次 move 操作,数组将变为 [3, 4, 1, 2, 5, 7]。可以看出 5 次或 5 次以下的 move 操作是不能让数组的每个值唯一原创 2020-05-26 17:15:27 · 150 阅读 · 0 评论 -
Java,LeetCode 73. 矩阵置零
数组矩阵置零1. 题目描述难易度:中等给定一个 m x n 的矩阵,如果一个元素为 0,则将其所在行和列的所有元素都设为 0。请使用原地算法。示例 1:输入:[[1,1,1],[1,0,1],[1,1,1]]输出:[[1,0,1],[0,0,0],[1,0,1]]示例 2:输入:[[0,1,2,0],[3,4,5,2],[1,3,1,5]]输出:[[0,0,0,0],[0,4,5,0],[0,3,1,0]]来源:力扣(LeetCode)链接:h原创 2020-05-23 17:08:32 · 201 阅读 · 0 评论 -
Java,LeetCode 54. 螺旋矩阵
数组螺旋矩阵1. 题目描述难易度:中等给定一个包含 m x n 个元素的矩阵(m 行, n 列),请按照顺时针螺旋顺序,返回矩阵中的所有元素。示例 1:输入:[[ 1, 2, 3 ],[ 4, 5, 6 ],[ 7, 8, 9 ]]输出: [1,2,3,6,9,8,7,4,5]示例 2:输入:[[1, 2, 3, 4],[5, 6, 7, 8],[9,10,11,12]]输出: [1,2,3,4,8,12,11,10,9,5,6,7]来源:力扣(LeetCode)原创 2020-05-21 16:23:26 · 255 阅读 · 0 评论 -
Java,LeetCode 141. 环形链表
链表、双指针环形链表1. 题目描述难易度:简单给定一个链表,判断链表中是否有环。为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。示例 1:输入:head = [3,2,0,-4], pos = 1输出:true解释:链表中有一个环,其尾部连接到第二个节点。示例 2:输入:head = [1,2], pos = 0输出:true解释:链表中有一个环,其尾部连接到第一个节点。示例 3:原创 2020-05-19 15:59:41 · 108 阅读 · 0 评论 -
Java,LeetCode 209. 长度最小的子数组
双指针,长度最小的子数组1. 题目描述难易度:中等给定一个含有 n 个正整数的数组和一个正整数 s ,找出该数组中满足其和 ≥ s 的长度最小的连续子数组,并返回其长度。如果不存在符合条件的连续子数组,返回 0。示例:输入: s = 7, nums = [2,3,1,2,4,3]输出: 2解释: 子数组 [4,3] 是该条件下的长度最小的连续子数组。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/minimum-size-subarra原创 2020-05-19 14:55:51 · 162 阅读 · 0 评论 -
Java,LeetCode 121. 买卖股票的最佳时机
双指针,买卖股票的最佳时机1. 题目描述难易度:简单给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。如果你最多只允许完成一笔交易(即买入和卖出一支股票一次),设计一个算法来计算你所能获取的最大利润。注意:你不能在买入股票前卖出股票。示例 1:输入: [7,1,5,3,6,4]输出: 5解释: 在第 2 天(股票价格 = 1)的时候买入,在第 5 天(股票价格 = 6)的时候卖出,最大利润 = 6-1 = 5。注意利润不能是 7-1 = 6, 因为卖出价格需要大于买入价格;同原创 2020-05-18 15:33:52 · 105 阅读 · 0 评论 -
Java,LeetCode 16. 最接近的三数之和
双指针,最接近的三数之和1. 题目描述难易度:中等给定一个包括 n 个整数的数组 nums 和 一个目标值 target。找出 nums 中的三个整数,使得它们的和与 target 最接近。返回这三个数的和。假定每组输入只存在唯一答案。例如,给定数组 nums = [-1,2,1,-4], 和 target = 1.与 target 最接近的三个数的和为 2. (-1 + 2 + 1 = 2).来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems原创 2020-05-15 18:38:12 · 233 阅读 · 0 评论 -
Java,LeetCode 11. 盛最多水的容器
双指针,盛最多水的容器1. 题目描述难易度:中等给你 n 个非负整数 a1,a2,…,an,每个数代表坐标中的一个点 (i, ai) 。在坐标内画 n 条垂直线,垂直线 i 的两个端点分别为 (i, ai) 和 (i, 0)。找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。说明:你不能倾斜容器,且 n 的值至少为 2。图中垂直线代表输入数组 [1,8,6,2,5,4,8,3,7]。在此情况下,容器能够容纳水(表示为蓝色部分)的最大值为 49。示例:输入:[1,8,6,2,原创 2020-05-11 15:03:31 · 257 阅读 · 0 评论 -
Java,LeetCode 206. 反转链表
链表,反转链表1. 题目描述难易度:简单反转一个单链表。示例:输入: 1->2->3->4->5->NULL输出: 5->4->3->2->1->NULL进阶:你可以迭代或递归地反转链表。你能否用两种方法解决这道题?来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/reverse-linked-list2. 思路分析定义节点cur用于遍历整个链表每次保留cur的前驱节点原创 2020-05-08 23:49:44 · 224 阅读 · 0 评论 -
Java,LeetCode 138. 复制带随机指针的链表
链表,复制带随机指针的链表1. 题目描述难易度:中等给定一个链表,每个节点包含一个额外增加的随机指针,该指针可以指向链表中的任何节点或空节点。要求返回这个链表的 深拷贝。我们用一个由 n 个节点组成的链表来表示输入/输出中的链表。每个节点用一个 [val, random_index] 表示:val:一个表示 Node.val 的整数。random_index:随机指针指向的节点索引(范围从 0 到 n-1);如果不指向任何节点,则为 null 。示例 1:输入:head = [[7,n原创 2020-05-08 23:47:47 · 191 阅读 · 0 评论 -
Java,LeetCode 61. 旋转链表
链表,旋转链表1. 题目描述难易度:中等给定一个链表,旋转链表,将链表每个节点向右移动 k 个位置,其中 k 是非负数。示例 1:输入: 1->2->3->4->5->NULL, k = 2输出: 4->5->1->2->3->NULL解释:向右旋转 1 步: 5->1->2->3->4->NULL向右旋转 2 步: 4->5->1->2->3->NULL示例 2:输原创 2020-05-08 23:44:59 · 281 阅读 · 0 评论 -
Java,LeetCode 19. 删除链表倒数第N个节点
链表,删除链表倒数第N个节点1. 题目描述难易度:中等给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点。示例:给定一个链表: 1->2->3->4->5, 和 n = 2.当删除了倒数第二个节点后,链表变为 1->2->3->5.说明:给定的 n 保证是有效的。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/remove-nth-node-from-end-of-list2.原创 2020-05-08 23:43:31 · 238 阅读 · 0 评论 -
Java,LeetCode 2. 两数相加
链表,两数相加1. 题目描述难易度:中等给出两个 非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字。如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。您可以假设除了数字 0 之外,这两个数都不会以 0 开头。示例:输入:(2 -> 4 -> 3) + (5 -> 6 -> 4)输出:7 -> 0 -> 8原因:342 + 465 = 807来源:力扣(LeetCo原创 2020-05-08 23:40:52 · 200 阅读 · 0 评论