
leetcode
是晓Xiao哦
这个作者很懒,什么都没留下…
展开
-
LeetCode第64题最小路径和
题目来源题目描述给定一个包含非负整数的 m x n 网格,请找出一条从左上角到右下角的路径,使得路径上的数字总和为最小。说明:每次只能向下或者向右移动一步。示例:输入:[[1,3,1],[1,5,1],[4,2,1]]输出: 7解释: 因为路径 1→3→1→1→1 的总和最小。代码class Solution { public int minPathSum(int[][] grid) { if(grid == null || grid.length ==原创 2020-10-26 19:08:13 · 173 阅读 · 0 评论 -
LeetCode第918题环形子数组的最大和
题目来源题目描述给定一个由整数数组 A 表示的环形数组 C,求 C 的非空子数组的最大可能和。在此处,环形数组意味着数组的末端将会与开头相连呈环状。(形式上,当0 <= i < A.length 时 C[i] = A[i],且当 i >= 0 时 C[i+A.length] = C[i])此外,子数组最多只能包含固定缓冲区 A 中的每个元素一次。(形式上,对于子数组 C[i], C[i+1], …, C[j],不存在 i <= k1, k2 <= j 其中 k1 % A原创 2020-10-11 16:47:39 · 247 阅读 · 0 评论 -
LeetCode第406题根据身高重建队列
题目来源题目描述假设有打乱顺序的一群人站成一个队列。 每个人由一个整数对(h, k)表示,其中h是这个人的身高,k是排在这个人前面且身高大于或等于h的人数。 编写一个算法来重建这个队列。注意:总人数少于1100人。示例输入:[[7,0], [4,4], [7,1], [5,0], [6,1], [5,2]]输出:[[5,0], [7,0], [5,2], [6,1], [4,4], [7,1]]...原创 2020-10-04 17:00:43 · 184 阅读 · 0 评论 -
LeetCode第452题用最少数量的箭引爆气球
题目来源题目描述在二维空间中有许多球形的气球。对于每个气球,提供的输入是水平方向上,气球直径的开始和结束坐标。由于它是水平的,所以y坐标并不重要,因此只要知道开始和结束的x坐标就足够了。开始坐标总是小于结束坐标。平面内最多存在104个气球。一支弓箭可以沿着x轴从不同点完全垂直地射出。在坐标x处射出一支箭,若有一个气球的直径的开始和结束坐标为 xstart,xend, 且满足 xstart ≤ x ≤ xend,则该气球会被引爆。可以射出的弓箭的数量没有限制。 弓箭一旦被射出之后,可以无限地前进。我们原创 2020-10-04 16:43:09 · 331 阅读 · 0 评论 -
LeetCode第435题无重叠区间
题目来源题目描述给定一个区间的集合,找到需要移除区间的最小数量,使剩余区间互不重叠。注意:可以认为区间的终点总是大于它的起点。区间 [1,2] 和 [2,3] 的边界相互“接触”,但没有相互重叠。示例 1:输入: [ [1,2], [2,3], [3,4], [1,3] ]输出: 1解释: 移除 [1,3] 后,剩下的区间没有重叠。示例 2:输入: [ [1,2], [1,2], [1,2] ]输出: 2解释: 你需要移除两个 [1,2] 来使剩下的区间没有重叠。示例 3:输入原创 2020-10-04 16:10:38 · 279 阅读 · 0 评论 -
LeetCode第455题分发饼干
题目来源题目描述假设你是一位很棒的家长,想要给你的孩子们一些小饼干。但是,每个孩子最多只能给一块饼干。对每个孩子 i ,都有一个胃口值 gi ,这是能让孩子们满足胃口的饼干的最小尺寸;并且每块饼干 j ,都有一个尺寸 sj 。如果 sj >= gi ,我们可以将这个饼干 j 分配给孩子 i ,这个孩子会得到满足。你的目标是尽可能满足越多数量的孩子,并输出这个最大数值。注意:你可以假设胃口值为正。一个小朋友最多只能拥有一块饼干。示例 1:输入: [1,2,3], [1,1]输出: 1解原创 2020-10-04 15:46:15 · 1007 阅读 · 0 评论 -
LeetCode第524题通过删除字母匹配到字典里最长单词
题目来源题目描述给定一个字符串和一个字符串字典,找到字典里面最长的字符串,该字符串可以通过删除给定字符串的某些字符来得到。如果答案不止一个,返回长度最长且字典顺序最小的字符串。如果答案不存在,则返回空字符串。示例 1:输入:s = “abpcplea”, d = [“ale”,“apple”,“monkey”,“plea”]输出:“apple”示例 2:输入:s = “abpcplea”, d = [“a”,“b”,“c”]输出:“a”说明:所有输入的字符串只包含小写字母。字典原创 2020-10-04 15:23:59 · 145 阅读 · 0 评论 -
LeetCode第680题 验证回文字符串 Ⅱ
题目来源题目描述给定一个非空字符串 s,最多删除一个字符。判断是否能成为回文字符串。示例 1:输入: “aba”输出: True示例 2:输入: “abca”输出: True解释: 你可以删除c字符。注意:字符串只包含从 a-z 的小写字母。字符串的最大长度是50000。代码class Solution { public boolean validPalindrome(String s) { for(int i = 0, j = s.length() - 1原创 2020-09-30 11:05:06 · 182 阅读 · 0 评论 -
LeetCode第191题 位1的个数
题目来源题目描述编写一个函数,输入是一个无符号整数,返回其二进制表达式中数字位数示例 1:输入:00000000000000000000000000001011输出:3解释:输入的二进制串 00000000000000000000000000001011 中,共有三位为 ‘1’。示例 2:输入:00000000000000000000000010000000输出:1解释:输入的二进制串 00000000000000000000000010000000 中,共有一位为 ‘1’。示例 3:原创 2020-09-30 10:54:25 · 140 阅读 · 0 评论 -
LeetCode第345题反转字符串中的元音字母
题目来源题目描述编写一个函数,以字符串作为输入,反转该字符串中的元音字母。示例 1:输入:“hello”输出:“holle”示例 2:输入:“leetcode”输出:“leotcede”提示:元音字母不包含字母 “y”代码class Solution { public String reverseVowels(String s) { if(s == null || s.length() == 0) return s; String vowels原创 2020-09-28 19:02:27 · 158 阅读 · 0 评论 -
LeetCode第633题平方数之和
题目来源题目描述给定一个非负整数 c ,你要判断是否存在两个整数 a 和 b,使得 a2 + b2 = c。示例1:输入: 5输出: True解释: 1 * 1 + 2 * 2 = 5示例2:输入: 3输出: False解题思路可以把这个问题转为:求解1~target的有序数组中查找两个数,使得这两个数的平方和为target,如果能找到,则返回true,表示target是两个整数的平方和。注意点输入: 2输出: True解释: 1 * 1 + 1 * 1 = 5左边的指针应为原创 2020-09-28 16:36:11 · 253 阅读 · 0 评论 -
LeetCode第696题计数二进制子串
题目来源题目描述给定一个字符串 s,计算具有相同数量0和1的非空(连续)子字符串的数量,并且这些子字符串中的所有0和所有1都是组合在一起的。重复出现的子串要计算它们出现的次数。示例 1 :输入: “00110011”输出: 6解释: 有6个子串具有相同数量的连续1和0:“0011”,“01”,“1100”,“10”,“0011” 和 “01”。请注意,一些重复出现的子串要计算它们出现的次数。另外,“00110011”不是有效的子串,因为所有的0(和1)没有组合在一起。示例 2 :输入:原创 2020-09-28 15:57:25 · 122 阅读 · 0 评论 -
LeetCode第82题删除排序链表中的重复元素 II
题目来源题目描述给定一个排序链表,删除所有含有重复数字的节点,只保留原始链表中 没有重复出现 的数字。示例 1:输入: 1->2->3->3->4->4->5输出: 1->2->5示例 2:输入: 1->1->1->2->3输出: 2->3代码/** * Definition for singly-linked list. * public class ListNode { * int val;原创 2020-09-25 19:48:50 · 168 阅读 · 0 评论 -
LeetCode第83题 删除排序链表中的重复元素
题目来源题目描述给定一个排序链表,删除所有重复的元素,使得每个元素只出现一次。示例 1:输入: 1->1->2输出: 1->2示例 2:输入: 1->1->2->3->3输出: 1->2->3代码/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNod原创 2020-09-25 16:54:51 · 120 阅读 · 0 评论 -
LeetCode第20题有效的括号
题目来源题目描述给定一个只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字符串,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。注意空字符串可被认为是有效字符串。示例 1:输入: “()”输出: true示例 2:输入: “()[]{}”输出: true示例 3:输入: “(]”输出: false示例 4:输入: “([)]”输出: false示例 5:输入: “{[]}”输出: true解题思路使用原创 2020-09-24 15:26:35 · 150 阅读 · 0 评论 -
LeetCode第1143题最长公共子序列
题目来源给定两个字符串 text1 和 text2,返回这两个字符串的最长公共子序列的长度。一个字符串的 子序列 是指这样一个新的字符串:它是由原字符串在不改变字符的相对顺序的情况下删除某些字符(也可以不删除任何字符)后组成的新字符串。例如,“ace” 是 “abcde” 的子序列,但 “aec” 不是 “abcde” 的子序列。两个字符串的「公共子序列」是这两个字符串所共同拥有的子序列。若这两个字符串没有公共子序列,则返回 0。示例 1:输入:text1 = “abcde”, text2 =原创 2020-09-24 10:26:38 · 473 阅读 · 0 评论 -
LeetCode第167题两数之和 II - 输入有序数组
题目来源题目描述给定一个已按照升序排列 的有序数组,找到两个数使得它们相加之和等于目标数。函数应该返回这两个下标值 index1 和 index2,其中 index1 必须小于 index2。说明:返回的下标值(index1 和 index2)不是从零开始的。你可以假设每个输入只对应唯一的答案,而且你不可以重复使用相同的元素。示例:输入: numbers = [2, 7, 11, 15], target = 9输出: [1,2]解释: 2 与 7 之和等于目标数 9 。因此 index1原创 2020-09-23 10:01:12 · 138 阅读 · 0 评论 -
LeetCode第692题前K个高频单词
题目来源题目描述给一非空的单词列表,返回前 k 个出现次数最多的单词。返回的答案应该按单词出现频率由高到低排序。如果不同的单词有相同出现频率,按字母顺序排序。示例 1:输入: [“i”, “love”, “leetcode”, “i”, “love”, “coding”], k = 2输出: [“i”, “love”]解析: “i” 和 “love” 为出现次数最多的两个单词,均为2次。注意,按字母顺序 “i” 在 “love” 之前。示例 2:输入: [“the”, “day”, “i原创 2020-09-22 16:44:16 · 189 阅读 · 1 评论 -
LeetCode第347题前 K 个高频元素
题目来源题目描述给定一个非空的整数数组,返回其中出现频率前 k 高的元素。示例 1:输入: nums = [1,1,1,2,2,3], k = 2输出: [1,2]示例 2:输入: nums = [1], k = 1输出: [1]提示:你可以假设给定的 k 总是合理的,且 1 ≤ k ≤ 数组中不相同的元素的个数。你的算法的时间复杂度必须优于 O(n log n) , n 是数组的大小。题目数据保证答案唯一,换句话说,数组中前 k 个高频元素的集合是唯一的。你可以按任意顺序返回答案原创 2020-09-21 10:22:33 · 169 阅读 · 0 评论 -
LeetCode第451题根据字符出现频率排序
题目来源题目描述给定一个字符串,请将字符串里的字符按照出现的频率降序排列。示例 1:输入:“tree”输出:“eert”解释:'e’出现两次,'r’和’t’都只出现一次。因此’e’必须出现在’r’和’t’之前。此外,"eetr"也是一个有效的答案。示例 2:输入:“cccaaa”输出:“cccaaa”解释:'c’和’a’都出现三次。此外,"aaaccc"也是有效的答案。注意"cacaca"是不正确的,因为相同的字母必须放在一起。示例 3:输入:“Aabb”输出:原创 2020-09-21 09:40:27 · 124 阅读 · 0 评论 -
LeetCode第459题重复的子字符串
题目来源题目描述给定一个非空的字符串,判断它是否可以由它的一个子串重复多次构成。给定的字符串只含有小写英文字母,并且长度不超过10000。示例 1:输入: “abab”输出: True解释: 可由子字符串 “ab” 重复两次构成。示例 2:输入: “aba”输出: False示例 3:输入: “abcabcabcabc”输出: True解释: 可由子字符串 “abc” 重复四次构成。 (或者子字符串 “abcabc” 重复两次构成。)代码class Solution {原创 2020-09-21 09:25:36 · 149 阅读 · 0 评论 -
LeetCode第1047题删除字符串中的所有相邻重复项
题目来源题目描述给出由小写字母组成的字符串 S,重复项删除操作会选择两个相邻且相同的字母,并删除它们。在 S 上反复执行重复项删除操作,直到无法继续删除。在完成所有重复项删除操作后返回最终的字符串。答案保证唯一。示例:输入:“abbaca”输出:“ca”解释:例如,在 “abbaca” 中,我们可以删除 “bb” 由于两字母相邻且相同,这是此时唯一可以执行删除操作的重复项。之后我们得到字符串 “aaca”,其中又只有 “aa” 可以执行重复项删除操作,所以最后的字符串为 “ca”。提示:原创 2020-09-17 10:09:35 · 778 阅读 · 0 评论 -
LeetCode第5题最长回文子串
题目来源题目描述给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为 1000。示例 1:输入: “babad”输出: “bab”注意: “aba” 也是一个有效答案。示例 2:输入: “cbbd”输出: “bb”小知识点substring(int beginIndex, int endIndex)返回字符串的子字符串,包括起始索引,不包含结束索引代码class Solution { private int lo, maxLen; publi原创 2020-09-16 14:12:01 · 123 阅读 · 0 评论 -
LeetCode第150题逆波兰表达式求值
题目来源题目描述根据 逆波兰表示法,求表达式的值。有效的运算符包括 +, -, *, / 。每个运算对象可以是整数,也可以是另一个逆波兰表达式。说明:整数除法只保留整数部分。给定逆波兰表达式总是有效的。换句话说,表达式总会得出有效数值且不存在除数为 0 的情况。示例 1:输入: [“2”, “1”, “+”, “3”, “"]输出: 9解释: 该算式转化为常见的中缀算术表达式为:((2 + 1) * 3) = 9示例 2:输入: [“4”, “13”, “5”, “/”, “+”]原创 2020-09-16 10:56:33 · 364 阅读 · 0 评论 -
LeetCode第1108题 IP 地址无效化
题目来源题目描述给你一个有效的 IPv4 地址 address,返回这个 IP 地址的无效化版本。所谓无效化 IP 地址,其实就是用 “[.]” 代替了每个 “.”。示例 1:输入:address = “1.1.1.1”输出:“1[.]1[.]1[.]1”示例 2:输入:address = “255.100.50.0”输出:“255[.]100[.]50[.]0”提示:给出的 address 是一个有效的 IPv4 地址代码class Solution { public S原创 2020-09-14 21:44:26 · 219 阅读 · 0 评论 -
LeetCode第9题回文数
题目来源题目描述判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。示例 1:输入: 121输出: true示例 2:输入: -121输出: false解释: 从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。示例 3:输入: 10输出: false解释: 从右向左读, 为 01 。因此它不是一个回文数。解题思路把整数分为左右两部分,将右边那部分逆序,与左边那部分对比分两种情况:一个整数的个数是偶数:x原创 2020-09-09 11:17:39 · 149 阅读 · 0 评论 -
LeetCode第647题回文子串
题目来源题目描述给定一个字符串,你的任务是计算这个字符串中有多少个回文子串。具有不同开始位置或结束位置的子串,即使是由相同的字符组成,也会被视作不同的子串。示例 1:输入:“abc”输出:3解释:三个回文子串: “a”, “b”, “c”示例 2:输入:“aaa”输出:6解释:6个回文子串: “a”, “a”, “a”, “aa”, “aa”, “aaa”提示:输入的字符串长度不会超过 1000 。代码class Solution { int count = 0;原创 2020-09-09 10:47:44 · 161 阅读 · 0 评论 -
LeetCode第409题最长回文串
题目来源题目描述给定一个包含大写字母和小写字母的字符串,找到通过这些字母构造成的最长的回文串。在构造过程中,请注意区分大小写。比如 “Aa” 不能当做一个回文字符串。注意:假设字符串的长度不会超过 1010。示例 1:输入: “abccccdd”输出: 7解释:我们可以构造的最长的回文串是"dccaccd", 它的长度是 7。代码...原创 2020-09-08 20:56:44 · 182 阅读 · 0 评论 -
LeetCode第205题同构字符串
题目来源题目描述给定两个字符串 s 和 t,判断它们是否是同构的。如果 s 中的字符可以被替换得到 t ,那么这两个字符串是同构的。所有出现的字符都必须用另一个字符替换,同时保留字符的顺序。两个字符不能映射到同一个字符上,但字符可以映射自己本身。示例 1:输入: s = “egg”, t = “add”输出: true示例 2:输入: s = “foo”, t = “bar”输出: false示例 3:输入: s = “paper”, t = “title”输出: true示例原创 2020-09-07 11:18:47 · 129 阅读 · 0 评论 -
LeetCode第242题有效的字母异位词
题目来源题目描述给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。示例 1:输入: s = “anagram”, t = “nagaram”输出: true示例 2:输入: s = “rat”, t = “car”输出: false说明:你可以假设字符串只包含小写字母。代码class Solution { public boolean isAnagram(String s, String t) { int[] al = new i原创 2020-09-07 09:58:43 · 189 阅读 · 0 评论 -
LeetCode第769题最多能完成排序的块
题目来源题目来源数组arr是[0, 1, …, arr.length - 1]的一种排列,我们将这个数组分割成几个“块”,并将这些块分别进行排序。之后再连接起来,使得连接的结果和按升序排序后的原数组相同。我们最多能将数组分成多少块?示例 1:输入: arr = [4,3,2,1,0]输出: 1解释:将数组分成2块或者更多块,都无法得到所需的结果。例如,分成 [4, 3], [2, 1, 0] 的结果是 [3, 4, 0, 1, 2],这不是有序的数组。示例 2:输入: arr = [1原创 2020-09-05 21:55:56 · 142 阅读 · 0 评论 -
LeetCode第565题数组嵌套
题目来源题目描述索引从0开始长度为N的数组A,包含0到N - 1的所有整数。找到最大的集合S并返回其大小,其中 S[i] = {A[i], A[A[i]], A[A[A[i]]], … }且遵守以下的规则。假设选择索引为i的元素A[i]为S的第一个元素,S的下一个元素应该是A[A[i]],之后是A[A[A[i]]]… 以此类推,不断添加直到S出现重复的元素。示例 1:输入: A = [5,4,0,3,1,6,2]输出: 4解释:A[0] = 5, A[1] = 4, A[2] = 0, A[原创 2020-09-05 21:30:25 · 179 阅读 · 0 评论 -
LeetCode第766题托普利茨矩阵
题目来源题目描述如果矩阵上每一条由左上到右下的对角线上的元素都相同,那么这个矩阵是 托普利茨矩阵 。给定一个 M x N 的矩阵,当且仅当它是托普利茨矩阵时返回 True。示例 1:输入:matrix = [[1,2,3,4],[5,1,2,3],[9,5,1,2]]输出: True解释:在上述矩阵中, 其对角线为:“[9]”, “[5, 5]”, “[1, 1, 1]”, “[2, 2, 2]”, “[3, 3]”, “[4]”。各条对角线上的所有元素均相同, 因此答案是Tr原创 2020-09-05 21:09:38 · 308 阅读 · 0 评论 -
LeetCode第697题数组的度
题目来源题目描述给定一个非空且只包含非负数的整数数组 nums, 数组的度的定义是指数组里任一元素出现频数的最大值。你的任务是找到与 nums 拥有相同大小的度的最短连续子数组,返回其长度。示例 1:输入: [1, 2, 2, 3, 1]输出: 2解释:输入数组的度是2,因为元素1和2的出现频数最大,均为2.连续子数组里面拥有相同度的有如下所示:[1, 2, 2, 3, 1], [1, 2, 2, 3], [2, 2, 3, 1], [1, 2, 2], [2, 2, 3], [2, 2原创 2020-09-05 20:48:48 · 190 阅读 · 0 评论 -
LeetCode第667题优美的排列 II
题目来源题目描述给定两个整数 n 和 k,你需要实现一个数组,这个数组包含从 1 到 n 的 n 个不同整数,同时满足以下条件:① 如果这个数组是 [a1, a2, a3, … , an] ,那么数组 [|a1 - a2|, |a2 - a3|, |a3 - a4|, … , |an-1 - an|] 中应该有且仅有 k 个不同整数;.② 如果存在多种答案,你只需实现并返回其中任意一种.示例 1:输入: n = 3, k = 1输出: [1, 2, 3]解释: [1, 2, 3] 包含 3原创 2020-09-05 20:08:11 · 188 阅读 · 0 评论 -
LeetCode第287题寻找重复数
题目来源题目描述给定一个包含 n + 1 个整数的数组 nums,其数字都在 1 到 n 之间(包括 1 和 n),可知至少存在一个重复的整数。假设只有一个重复的整数,找出这个重复的数。示例 1:输入: [1,3,4,2,2]输出: 2示例 2:输入: [3,1,3,4,2]输出: 3说明:不能更改原数组(假设数组是只读的)。只能使用额外的 O(1) 的空间。时间复杂度小于 O(n2) 。数组中只有一个重复的数字,但它可能不止重复出现一次。解题思路第一种解法二分查找代码c原创 2020-09-05 19:35:44 · 186 阅读 · 0 评论 -
LeetCode第645题错误的集合
题目来源题目描述集合 S 包含从1到 n 的整数。不幸的是,因为数据错误,导致集合里面某一个元素复制了成了集合里面的另外一个元素的值,导致集合丢失了一个整数并且有一个元素重复。给定一个数组 nums 代表了集合 S 发生错误后的结果。你的任务是首先寻找到重复出现的整数,再找到丢失的整数,将它们以数组的形式返回。示例 1:输入: nums = [1,2,2,4]输出: [2,3]注意:给定数组的长度范围是 [2, 10000]。给定的数组是无序的代码class Solution {原创 2020-09-03 22:46:36 · 146 阅读 · 0 评论 -
LeetCode第378题有序矩阵中第K小的元素
题目来源题目描述给定一个 n x n 矩阵,其中每行和每列元素均按升序排序,找到矩阵中第 k 小的元素。请注意,它是排序后的第 k 小元素,而不是第 k 个不同的元素。示例:matrix = [[ 1, 5, 9],[10, 11, 13],[12, 13, 15]],k = 8,返回 13。提示:你可以假设 k 的值永远是有效的,1 ≤ k ≤ n2 。解题思路代码class Solution { public int kthSmallest(int[][] ma原创 2020-09-02 22:56:11 · 207 阅读 · 0 评论 -
LeetCode第240题搜索二维矩阵 II
题目来源题目描述编写一个高效的算法来搜索 m x n 矩阵 matrix 中的一个目标值 target。该矩阵具有以下特性:每行的元素从左到右升序排列。每列的元素从上到下升序排列。示例:现有矩阵 matrix 如下:[[1, 4, 7, 11, 15],[2, 5, 8, 12, 19],[3, 6, 9, 16, 22],[10, 13, 14, 17, 24],[18, 21, 23, 26, 30]]给定 target = 5,返回 true。给定 ta原创 2020-09-01 21:47:19 · 178 阅读 · 0 评论 -
LeetCode第485最大连续1的个数
题目来源题目描述给定一个二进制数组, 计算其中最大连续1的个数。示例 1:输入: [1,1,0,1,1,1]输出: 3解释: 开头的两位和最后的三位都是连续1,所以最大连续1的个数是 3.注意:输入的数组只包含 0 和1。输入数组的长度是正整数,且不超过 10,000代码class Solution { public int findMaxConsecutiveOnes(int[] nums) { int cur = 0, max = 0; fo原创 2020-09-01 21:30:16 · 114 阅读 · 0 评论