LeetCode
guxin_duyin
这个作者很懒,什么都没留下…
展开
-
LeetCode 69. x 的平方根
LeetCode x的平方根 算法原创 2022-11-05 21:25:36 · 167 阅读 · 0 评论 -
LeetCode 628. 三个数的最大乘积
LeetCode 三个数的最大乘积 排序 数学原创 2022-10-29 14:57:21 · 403 阅读 · 0 评论 -
LeetCode 206. 反转链表
LeetCode 翻转链表 递归 遍历原创 2022-10-23 19:28:30 · 234 阅读 · 0 评论 -
Leetcode 104.二叉树的最大深度
LeetCode 二叉树的最大深度 dfs 递归原创 2022-10-18 15:54:23 · 150 阅读 · 0 评论 -
LeetCode 162. 寻找峰值
LeetCode 寻找峰值 数组原创 2022-08-27 11:03:33 · 206 阅读 · 0 评论 -
Leetcode 349.两个数组的交集
LeetCode原创 2022-08-07 21:59:25 · 236 阅读 · 0 评论 -
LeetCode 56. 合并区间
LeetCode 56.合并区间 数组原创 2022-08-04 22:15:39 · 141 阅读 · 0 评论 -
LeetCode 268. 丢失的数字
LeetCode 268.丢失的数字 数组原创 2022-07-31 22:20:33 · 186 阅读 · 0 评论 -
编程训练--每周一道编程题(二)
题目:某公司 1 到 12 月份的销售额存在一个对象里面,如下:{1:222, 2:123, 5:888},请把数据处理为如下结构:[222, 123, null, null, 888, null, null, null, null, null, null, null]。方法一:const handle1 = obj => { let array = new Arr...原创 2020-03-14 11:01:42 · 250 阅读 · 0 评论 -
从零开始刷力扣(十六)——661. 图片平滑器
分类:二维数组及滚动数组题目描述:包含整数的二维矩阵 M 表示一个图片的灰度。你需要设计一个平滑器来让每一个单元的灰度成为平均灰度(向下舍入) ,平均灰度的计算是周围的8个单元和它本身的值求平均,如果周围的单元格不足八个,则尽可能多的利用它们。示例 1:输入:[[1,1,1], [1,0,1], [1,1,1]]输出:[[0, 0, 0], [0, 0, 0], [0, 0, 0]]解释:对于点 (0,0), (0,2), (2,0), (2,2): 平均(3/4) =.原创 2020-11-26 21:43:45 · 255 阅读 · 0 评论 -
从零开始刷力扣(七十二)——686. 重复叠加字符串匹配
分类:字符串题目描述给定两个字符串a和b,寻找重复叠加字符串a的最小次数,使得字符串b成为叠加后的字符串a的子串,如果不存在则返回-1。注意:字符串"abc"重复叠加 0 次是"",重复叠加 1 次是"abc",重复叠加 2 次是"abcabc"提示:1 <= a.length <= 104 1 <= b.length <= 104 a和b由小写英文字母组成示例 1:输入:a = "abcd", b = "cdabc...原创 2021-01-19 21:49:17 · 161 阅读 · 0 评论 -
从零开始刷力扣(十九)——396. 旋转函数
分类:数组的旋转题目描述:给定一个长度为n的整数数组A。假设Bk是数组A顺时针旋转 k 个位置后的数组,我们定义A的“旋转函数”F为:F(k) = 0 * Bk[0] + 1 * Bk[1] + ... + (n-1) * Bk[n-1]。计算F(0), F(1), ..., F(n-1)中的最大值。注意:可以认为n的值小于 105。示例:A = [4, 3, 2, 6]F(0) = (0 * 4) + (1 * 3) + (2 * 2) ...原创 2020-11-28 23:13:06 · 149 阅读 · 0 评论 -
从零开始刷力扣(四十七)——412. Fizz Buzz
分类:字符串题目描述:写一个程序,输出从 1 到n数字的字符串表示。1. 如果n是3的倍数,输出“Fizz”;2. 如果n是5的倍数,输出“Buzz”;3.如果n同时是3和5的倍数,输出 “FizzBuzz”。示例:n = 15,返回:[ "1", "2", "Fizz", "4", "Buzz", "Fizz", "7", "8", "Fizz", "Buzz", "...原创 2020-12-24 22:35:17 · 207 阅读 · 0 评论 -
编程训练--每周一道编程题(八)
题目:给定两个大小为 m 和 n 的有序数组nums1 和nums2。请你找出这两个有序数组的中位数,并且要求算法的时间复杂度为O(log(m + n))。你可以假设nums1和nums2不会同时为空。示例:nums1 = [1, 3] nums2 = [2] 则中位数是 2.0nums1 = [1, 2] nums2 = [3, 4] 则中位数是...原创 2020-04-24 09:52:57 · 185 阅读 · 2 评论 -
从零开始刷力扣(四)——414:第三大的数
分类:数组的遍历题目描述:给定一个非空数组,返回此数组中第三大的数。如果不存在,则返回数组中最大的数。要求算法时间复杂度必须是O(n)。示例1:输入: [3, 2, 1]输出: 1解释: 第三大的数是 1.示例2:输入: [1, 2]输出: 2解释: 第三大的数不存在, 所以返回最大的数 2 .示例3:输入: [2, 2, 3, 1]输出: 1解释: 注意,要求返回第三大的数,是指第三大且唯一出现的数。存在两个值为2的数,它们都排第二。思路原创 2020-11-18 21:32:54 · 104 阅读 · 0 评论 -
从零开始刷力扣(二十六)——303. 区域和检索 - 数组不可变
分类:前缀和数组题目描述:给定一个整数数组 nums,求出数组从索引i到j(i≤j)范围内元素的总和,包含i、j两点。实现 NumArray 类:NumArray(int[] nums) 使用数组 nums 初始化对象 int sumRange(int i, int j) 返回数组 nums 从索引i到j(i≤j)范围内元素的总和,包含i、j两点(也就是 sum(nums[i], nums[i + 1], ... , nums[j]))示例:输入:[...原创 2020-12-05 22:26:45 · 195 阅读 · 0 评论 -
从零开始刷力扣(十一)——453. 最小移动次数使数组元素相等
分类:数组的改变、移动题目描述:给定一个长度为n的非空整数数组,找到让数组所有元素相等的最小移动次数。每次移动将会使n- 1 个元素增加 1。示例:输入:[1,2,3]输出:3解释:只需要3次移动(注意每次移动会增加两个元素的值):[1,2,3] => [2,3,3] => [3,4,3] => [4,4,4]思路:n-1个元素都+1,等价于只将一个元素-1,所以,结果为所有的数与最小值的差值的和代码实现:var m...原创 2020-11-22 11:01:00 · 125 阅读 · 0 评论 -
排序算法之----快速排序
排序思路随机选取一个数组中的值作为基准值,从左至右取值与基准值对比大小。比基准值小的放数组左边,大的放右边,对比完成后将基准值和第一个比基准值大的值交换位置。然后将数组以基准值的位置分为两部分,继续递归以上操作。动图演示代码实现const quickSort = list => { // 递归出口 if (list.length < 2) { return list; } const base = list[0], left = [],原创 2021-01-10 10:58:02 · 105 阅读 · 0 评论 -
从零开始刷力扣(七十六)——7. 整数反转
分类:数与位题目描述给你一个 32 位的有符号整数x,返回x中每位上的数字反转后的结果。如果反转后整数超过 32 位的有符号整数的范围[−231, 231− 1],就返回 0。假设环境不允许存储 64 位整数(有符号或无符号)。提示:-231<= x <= 231- 1示例 1:输入:x = 123输出:321示例 2:输入:x = -123输出:-321示例 3:输入:x = 120输出:21示例 4:输入...原创 2021-01-23 22:11:09 · 111 阅读 · 0 评论 -
从零开始刷力扣(四十二)——49. 字母异位词分组
分类:字符串题目描述:给定一个字符串数组,将字母异位词组合在一起。字母异位词指字母相同,但排列不同的字符串。示例:输入: ["eat", "tea", "tan", "ate", "nat", "bat"]输出:[ ["ate","eat","tea"], ["nat","tan"], ["bat"]]说明:所有输入均为小写字母。 不考虑答案输出的顺序。思路:遍历数组,将字符串转化成数组然后排序再转成字符串,字母异位词转化成的字符串必定一样;因此,可...原创 2020-12-18 21:13:23 · 126 阅读 · 2 评论 -
编程训练--每周一道编程题(一)
从今天开始,每周一道编程题,立贴为证!今日编程题:随机生成一个长度为10的整数类型的数组,例如[2,10,3,4,5,11,10,11,20,23],将其排列成一个新数组,要求新数组形式如下,例如[[2,3,4,5],[10,11],[20,23]]其实,我感觉这道题有一点问题,因为没有限制数组内元素的范围,如果是1-100000就不太好分了,所以,我觉得应该限制为1-100;这样这个...原创 2020-03-07 21:46:12 · 381 阅读 · 0 评论 -
从零开始刷力扣(一)——485:最大连续1的个数
分类:数组的遍历题目描述:给定一个二进制数组, 计算其中最大连续1的个数。示例1:输入: [1,1,0,1,1,1]输出: 3解释: 开头的两位和最后的三位都是连续1,所以最大连续1的个数是 3.思路:初始化count和maxCount,然后遍历数组,遇见1则count++,并且更新与maxCount比较,若比maxCount更大,则更新maxCount的值;若遇见0,则count重置为0;代码实现:/** * @param {number[]} nums *原创 2020-11-15 22:31:51 · 102 阅读 · 0 评论 -
编程训练--每周一道编程题(十一)
题目:给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。示例:给定数组 nums = [1,1,2], 函数应该返回新的长度 2, 并且原数组 nums 的前两个元素被修改为 1, 2。给定 nums = [0,0,1,1,1,2,2,3,3,4],函数应该返回新的长度 5, 并且原数组 nums 的前五个元素被修改为 0, 1,...原创 2020-05-17 21:05:12 · 207 阅读 · 0 评论 -
从零开始刷力扣(六十九)——6. Z 字形变换
分类:字符串题目描述将一个给定字符串s根据给定的行数numRows,以从上往下、从左到右进行Z 字形排列。比如输入字符串为"PAYPALISHIRING"行数为3时,排列如下:P A H NA P L S I I GY I R之后,你的输出需要从左往右逐行读取,产生出一个新的字符串,比如:"PAHNAPLSIIGYIR"。请你实现这个将字符串进行指定行数变换的函数:string convert(string s, int numRow...原创 2021-01-16 16:13:12 · 112 阅读 · 0 评论 -
从零开始刷力扣(四十)——242. 有效的字母异位词
分类:字符串题目描述:给定两个字符串s和t,编写一个函数来判断t是否是s的字母异位词。示例1:输入: s = "anagram", t = "nagaram"输出: true示例 2:输入: s = "rat", t = "car"输出: false说明:你可以假设字符串只包含小写字母。思路:1、如果两个字符串长度不同,显然是false2、长度相同时,遍历某个字符串,另一个字符串一次找到该字符的位置,若index<-1,返回false...原创 2020-12-16 21:49:46 · 185 阅读 · 0 评论 -
从零开始刷力扣(六十七)——43. 字符串相乘
分类:字符串题目描述给定两个以字符串形式表示的非负整数num1和num2,返回num1和num2的乘积,它们的乘积也表示为字符串形式。说明:num1和num2的长度小于110。 num1和num2只包含数字0-9。 num1和num2均不以零开头,除非是数字 0 本身。 不能使用任何标准库的大数类型(比如 BigInteger)或直接将输入转换为整数来处理。示例 1:输入: num1 = "2", num2 = "3"输出: "6"示例...原创 2021-01-14 22:20:39 · 100 阅读 · 0 评论 -
从零开始刷力扣(三十五)——557. 反转字符串中的单词 III
分类:字符串题目描述:给定一个字符串,你需要反转字符串中每个单词的字符顺序,同时仍保留空格和单词的初始顺序。示例:输入:"Let's take LeetCode contest"输出:"s'teL ekat edoCteeL tsetnoc"提示:在字符串中,每个单词由单个空格分隔,并且字符串中不会有任何额外的空格。思路:将原字符串用split方法拆分成数组,然后再用map方法返回翻转后的子字符串,最后再用join方法连接成新的字符串代码实现:/** * @pa原创 2020-12-12 21:09:43 · 184 阅读 · 0 评论 -
从零开始刷力扣(八)——442.数组中重复的数据
分类:统计数组中的元素题目描述:给定一个整数数组 a,其中1 ≤ a[i] ≤n(n为数组长度), 其中有些元素出现两次而其他元素出现一次。找到所有出现两次的元素。你可以不用到任何额外空间并在O(n)时间复杂度内解决这个问题吗?示例:输入:[4,3,2,7,8,2,3,1]输出:[2,3]思路:初始化一个map;遍历数组,若map中不存在该数字则放入map中,否则存到结果中返回;只需要遍历一次数组即可。代码实现:/** * @param {numbe..原创 2020-11-21 09:19:49 · 210 阅读 · 0 评论 -
从零开始刷力扣(三十九)——383. 赎金信
分类:字符串题目描述:给定一个赎金信 (ransom) 字符串和一个杂志(magazine)字符串,判断第一个字符串 ransom 能不能由第二个字符串 magazines 里面的字符构成。如果可以构成,返回 true ;否则返回 false。(题目说明:为了不暴露赎金信字迹,要从杂志上搜索各个需要的字母,组成单词来表达意思。杂志字符串中的每个字符只能在赎金信字符串中使用一次。)注意:你可以假设两个字符串均只含有小写字母。示例:canConstruct("a", "b") ->原创 2020-12-15 21:12:38 · 99 阅读 · 0 评论 -
从零开始刷力扣(十八)——189. 旋转数组
分类:数组的旋转题目描述:给定一个数组,将数组中的元素向右移动k个位置,其中k是非负数。示例 1:输入: [1,2,3,4,5,6,7] 和 k = 3输出: [5,6,7,1,2,3,4]解释:向右旋转 1 步: [7,1,2,3,4,5,6]向右旋转 2 步: [6,7,1,2,3,4,5]向右旋转 3 步: [5,6,7,1,2,3,4]示例2:输入: [-1,-100,3,99] 和 k = 2输出: [3,99,-1,-100]解释: 向右旋...原创 2020-11-28 22:27:49 · 186 阅读 · 0 评论 -
从零开始刷力扣(三十四)——541. 反转字符串 II
分类:字符串题目描述:给定一个字符串s和一个整数k,你需要对从字符串开头算起的每隔2k个字符的前k个字符进行反转。如果剩余字符少于k个,则将剩余字符全部反转。 如果剩余字符小于2k但大于或等于k个,则反转前k个字符,其余字符保持原样。示例:输入: s = "abcdefg", k = 2输出: "bacdfeg"提示:该字符串只包含小写英文字母。 给定字符串的长度和k在[1, 10000]范围内。思路:初始化一个index为0,然...原创 2020-12-12 14:32:18 · 178 阅读 · 0 评论 -
从零开始刷力扣(三十)——14. 最长公共前缀
分类:字符串题目描述:编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串""。示例1:输入: ["flower","flow","flight"]输出: "fl"示例2:输入: ["dog","racecar","car"]输出: ""解释: 输入不存在公共前缀。说明:所有输入只包含小写字母a-z。思路:从第一个字符串的第一个字符开始,使用数组的every方法和字符串的startsWidth方法判断是否每一个字符串都...原创 2020-12-08 22:16:16 · 88 阅读 · 0 评论 -
从零开始刷力扣(五十三)——640. 求解方程
分类:字符串题目描述:求解一个给定的方程,将x以字符串"x=#value"的形式返回。该方程仅包含'+',' - '操作,变量x和其对应系数。如果方程没有解,请返回“No solution”。如果方程有无限解,则返回“Infinite solutions”。如果方程中只有一个解,要保证返回值x是一个整数。示例 1:输入: "x+5-3+x=6+x-2"输出: "x=2"示例 2:输入: "x=x"输出: "Infinite solutions"示例 3...原创 2020-12-30 22:20:08 · 186 阅读 · 0 评论 -
从零开始刷力扣(二十八)——520. 检测大写字母
分类:字符题目描述:给定一个单词,你需要判断单词的大写使用是否正确。我们定义,在以下情况时,单词的大写用法是正确的:全部字母都是大写,比如"USA"。 单词中所有字母都不是大写,比如"leetcode"。 如果单词不只含有一个字母,只有首字母大写,比如"Google"。否则,我们定义这个单词没有正确使用大写字母。示例 1:输入: "USA"输出: True示例 2:输入: "FlaG"输出: False注意:输入是由大写和小写拉丁字母组成的非空单词。...原创 2020-12-06 20:41:01 · 168 阅读 · 0 评论 -
编程训练--每周一道编程题(九)
题目:给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。注意:假设我们的环境只能存储得下 32 位的有符号整数,则其数值范围为 [-2^31,2^31-1]。请根据这个假设,如果反转后整数溢出那么就返回 0。例子:输入: 123 输出: 321输入: -123 输出: -321思路:分两种情况讨论,一种是大于0的,直接进行数字翻转,然后和...原创 2020-05-01 10:03:53 · 199 阅读 · 0 评论 -
从零开始刷力扣(三十七)——387. 字符串中的第一个唯一字符
分类:字符串题目描述:给定一个字符串,找到它的第一个不重复的字符,并返回它的索引。如果不存在,则返回 -1。示例:s = "leetcode"返回 0s = "loveleetcode"返回 2提示:你可以假定该字符串只包含小写字母。思路:用一个map记录字符串中每个字符出现的次数和第一次出现的索引;然后遍历该map,取出第一个出现次数为1的字符的索引代码实现:/** * @param {string} s * @return {number} */v原创 2020-12-13 19:44:20 · 104 阅读 · 0 评论 -
从零开始刷力扣(六十)——481. 神奇字符串
分类:字符串题目描述神奇的字符串 S 只包含 ‘1’ 和 ‘2’,并遵守以下规则:字符串 S 是神奇的,因为串联字符 ‘1’ 和 ‘2’ 的连续出现次数会生成字符串 S 本身。字符串 S 的前几个元素如下:S = “1221121221221121122 …”如果我们将 S 中连续的 1 和 2 进行分组,它将变成:1 22 11 2 1 22 1 22 11 2 11 22 …并且每个组中 ‘1’ 或 ‘2’ 的出现次数分别是:1 2 2 1 1 2 1 2 2 1 2 2 …你可以看到原创 2021-01-06 20:42:26 · 120 阅读 · 0 评论 -
从零开始刷力扣(四十六)——299. 猜数字游戏
分类:字符串题目描述:你在和朋友一起玩猜数字(Bulls and Cows)游戏,该游戏规则如下:你写出一个秘密数字,并请朋友猜这个数字是多少。 朋友每猜测一次,你就会给他一个提示,告诉他的猜测数字中有多少位属于数字和确切位置都猜对了(称为“Bulls”, 公牛),有多少位属于数字猜对了但是位置不对(称为“Cows”, 奶牛)。 朋友根据提示继续猜,直到猜出秘密数字。请写出一个根据秘密数字和朋友的猜测数返回提示的函数,返回字符串的格式为xAyB,x和y都是数字,A表示公牛,用...原创 2020-12-23 22:39:57 · 251 阅读 · 0 评论 -
从零开始刷力扣(六十八)——482. 密钥格式化
分类:字符串题目描述有一个密钥字符串 S ,只包含字母,数字以及 '-'(破折号)。其中, N 个 '-' 将字符串分成了 N+1 组。给你一个数字 K,请你重新格式化字符串,使每个分组恰好包含 K 个字符。特别地,第一个分组包含的字符个数必须小于等于 K,但至少要包含 1 个字符。两个分组之间需要用 '-'(破折号)隔开,并且将所有的小写字母转换为大写字母。给定非空字符串 S 和数字 K,按照上面描述的规则进行格式化。提示:S 的长度可能很长,请按需分配大小。K 为正整数。 S原创 2021-01-15 22:03:40 · 139 阅读 · 0 评论 -
从零开始刷力扣(六十二)——524. 通过删除字母匹配到字典里最长单词
分类:字符串题目描述给定一个字符串和一个字符串字典,找到字典里面最长的字符串,该字符串可以通过删除给定字符串的某些字符来得到。如果答案不止一个,返回长度最长且字典顺序最小的字符串。如果答案不存在,则返回空字符串。说明:所有输入的字符串只包含小写字母。 字典的大小不会超过 1000。 所有输入的字符串长度不会超过 1000。示例 1:输入:s = "abpcplea", d = ["ale","apple","monkey","plea"]输出: "apple"示例2.原创 2021-01-08 22:16:56 · 112 阅读 · 0 评论