leetcode
文章平均质量分 50
刺杀曲奇兔
这个作者很懒,什么都没留下…
展开
-
无法吃午餐的学生数量 | leetcode算法学习
不使用队列。创建布尔数组以记录拿走午餐的人,定义两变量作为学生与三明治组的下标,如果有学生拿走三明治则三明治下标+1,但每次循环学生下标都要+1,因为如果拿走则轮到下一个学生,没有拿走则返回队尾重新开始排队学生也+1,注意循环到末尾时重新赋值为0以达到队列的效果,再定义一个变量为0,每次经过一个学生+1,每次有新的学生拿走三明治时赋值为0重新开始记录,如果完整循环一次却没有学生拿走三明治以中断记录说明当前的三明治是所有剩余学生都不需要的,找出此时布尔数组中false的个数即为剩余排队人数。原创 2022-10-19 22:58:30 · 258 阅读 · 1 评论 -
水果成篮 | leetcode算法学习
这道题其实不难理解,寻找最长的只含两个元素的连续子序列,我第一反应应该用一个数组记录长度,首先在遍历所给数组时找到第一个与上一个元素不同的元素,并将这两个元素存储起来再继续向后遍历时进行比较,如果有不同的说明已经到这两个元素组成连续子序列的最大长度,将长度存储,然后丢掉第一个元素继续向后遍历,直到结束,需要处理的地方在于边界处.提交成功之后查看题解,使用HashMap的滑动窗口,也不是很难理解,看过之后发现我的代码其实也是滑动窗口的一种形式,茅塞顿开.原创 2022-10-17 21:41:49 · 311 阅读 · 0 评论 -
用栈操作构建数组 | leetcode算法学习
这题medium,读懂题就很简单,从1到n依次读入只留下target中需要的数,秒了。原创 2022-10-15 14:24:09 · 200 阅读 · 0 评论 -
链表组件 | leetcode算法学习
题意很简单,找出head中拥有nums的最长子链表的组数,思路也很清晰,找出最长连续的值,如果有中断就代表下一个子链表的开始,不过每次都遍历数组是有点麻烦的,好在set中有`contains`方法,可以直接查找集合中是否存在某元素并返回布尔值,所以我们先把nums中的元素放进创建好的set中再进行操作就可以。原创 2022-10-12 13:38:34 · 251 阅读 · 0 评论 -
括号的分数 | leetcode算法学习
深度优先搜索,将字符串当作树状结构。原创 2022-10-11 16:13:55 · 102 阅读 · 0 评论 -
优势洗牌 | leetcode算法学习
非常典型的贪心,每次在A中寻找大于B[i]的最小值,若没有,则返回A中的最小值。如果A组最差的比不过A组最差的,就去消耗A组最强的来扩大优势。关键在于,如何快速在nums1中找到大于nums2[i]的最小值,可以使用二分法来查找。 所以在查找之前,要将nums1先从小到大排序。 还要注意的一点是每次找到了nums1中大于nums2[i]的最小值,都要在nums1中删除这个值,避免重复使用。这里使用了布尔数组来达到删除效果。步骤:- 将num1排序,- 从num2最大值开始比较,在nums1中二分查原创 2022-10-11 15:55:41 · 205 阅读 · 0 评论 -
盛最多水的容器 | leetcode算法学习
暴力解会超时,所以我们在遍历上想办法跳过无用的循环,如果直接能判断出当前数据一定比已经记录的最大值小就可以跳过这组数据。从两端开始向内推进,短板原理盛水最大量取决于最短的木板,所以我们算出当前水量后循环找出更长的“木板”即可,短一些的由于宽高都在减小盛水量必然是比不过之前的。这样的循环可以节约大量时间。原创 2022-10-07 16:52:23 · 80 阅读 · 0 评论 -
回文数 | leetcode算法学习
给你一个整数 x ,如果 x 是一个回文整数,返回 true ;否则,返回 false 。方法1:将数字转为字符串数组逐位比较方法2:数字翻转比较原创 2022-10-07 15:53:58 · 89 阅读 · 0 评论 -
最大升序子数组 | leetcode算法学习
给你一个正整数组成的数组 nums ,返回 nums 中一个 升序 子数组的最大可能元素和。子数组是数组中的一个连续数字序列。已知子数组 [numsl, numsl+1, ..., numsr-1, numsr] ,若对所有 i(l原创 2022-10-07 15:04:13 · 98 阅读 · 0 评论 -
字符串转换整数 | leetcode算法学习
1.除去前导02.判断正负3.在遇到非数字字符时停止程序返回04.注意溢出5.返回整数原创 2022-10-06 17:35:42 · 150 阅读 · 0 评论 -
子域名访问计数 | leetcode算法学习
这道题用HashMap思路很简单,将数组里的各级域名都拆出来然后放在一个新表中,由于放在HashMap中既可以满足域名唯一性以及便捷提取数据的特点显然要比放在数组里合适,在数组中添加新的数据时要先遍历一次是否存在该内容,并且计数也不是很方便,HashMap的key,value特性还有put,get方法直接就解决了这个问题,但是由于put方法会覆盖之前的值,所以我们使用 **getOrDefault(Object key, V defaultValue)** 方法,意思就是当Map集合中有这个key时,就使用原创 2022-10-06 15:50:55 · 104 阅读 · 0 评论 -
Z字形变换 | leetcode算法学习
理解题意后可知Z是竖着的,可能N更合适一点,从上到下从左到右把字符串按要求排列,第一下想到的是数组,观察后可发现可以把它分为一竖一斜线的重复执行,且每条竖线开始的下标有迹可循,每次开头所要遍历的字符个数也是相同的(除了最后一次可能不完整)。每一个圈为一次循环,上面是原数组遍历个数,下面是新数组每次循环下标增加的值,还有定义二维数组时列数为`字符串长度一半+numRows-1` ,为了保证每个元素都能被遍历到,for循环在字符串长度的基础上加了一个循环的长度,但这样会导致字符串被遍历完时for循环还没完成的情原创 2022-10-04 16:57:17 · 111 阅读 · 0 评论 -
使括号有效的最少添加 | leetcode算法学习
只有满足下面几点之一,括号字符串才是有效的: - 它是一个空字符串,或者 - 它可以被写成 AB (A 与 B 连接), 其中 A 和 B 都是有效字符串,或者 - 它可以被写作 (A),其中 A 是有效字符串。 给定一个括号字符串 s ,移动N次,你就可以在字符串的任何位置插入一个括号。 例如,如果 s = “()))” ,你可以插入一个开始括号为 “(()))” 或结束括号为 “())))” 。 返回 为使结果字符串 s 有效而必须添加的最少原创 2022-10-04 14:22:50 · 134 阅读 · 0 评论 -
最长回文子串 | leetcode算法学习
保存起始位置把回文看成中间的部分全是同一字符,左右部分相对称找到下一个与当前字符不同的字符查找中间部分定位中间部分的最后一个字符从中间向左右扩散记录最大长度原创 2022-10-03 16:38:36 · 74 阅读 · 0 评论 -
检查二进制字符串字段 | leetcode算法学习
思路:先把1第一次出现的位置用函数indexof找出,然后从此向后遍历,由于字符串没有下标,所以我们在indexof返回的位置基础上单独设置一个变量作为位置然后使用charAt返回ASCII码值与0和1进行比较,遇到0的时候说明这段连续1的子串已经被找出,子串数+1,然后略过连续0的部分寻找可能存在的下一个1,找到之后依旧是在碰到0时表明第二个子串已被找出,子串数+1·······原创 2022-10-03 15:39:34 · 136 阅读 · 0 评论 -
重新格式化电话号码 | leetcode算法学习
简单题,思路也简单,只需要处理初始字符串和在规定位置添加`-`就可。由于replace函数不能修改原字符串,所以要重新赋值,根据条件在剩余字符数大于4的情况下末四位要根据情况来定,所以将2、3、4及4以上位数分开讨论,前三部较简单第4步设置for循环依次递增在遇到3的整数倍时添加`-`,同样在剩余4位时进行不同处理,这里注意一定要在添加完`-`后判断,否则可能会出现末4位中前三位后加破折号只留最后一位的情况,不符合题意。原创 2022-10-01 10:14:06 · 93 阅读 · 0 评论 -
无重复字符的最长字符串 | leetcode算法学习
又是一道中等难度的题,解法也十分巧妙,首先将字符串的存储转为ASCII码的存储,这样做的意义就在于能够将循环查找改为索引查找,在判断该字符是否为首次出现有很大帮助。其次这样可以只使用一次循环,在遇到相同字符时从前一字符的下一位开始继续寻找更长的子串,方便快捷。此外,此解与官方解有区别的地方就在于这里在遇到重复字符时采取的方式为将新**的子串起始位置变为第一次重复的字符右一位**,而不是按顺序每次都向右移一位,这样做的好处为**减少循环次数**,但缺点为**增加了空间去记录每个字符的位置**,属于以空间换时间原创 2022-09-30 18:13:32 · 282 阅读 · 0 评论 -
零矩阵 | leetcode算法学习
编写一种算法,若M × N矩阵中某个元素为0,则将其所在的行与列清零。这道题的思路很简单,就是找出0所在行列的下标然后输出的时候进行判断,由于直接进行清除会导致同行列的0对应行列不能被清除,所以要先找到所有的0。个人认为妙点在 **row[i] = true,col[j] = true**这两行,这样不用每次都计算当前数是不是在已记录的下标当中。原创 2022-09-30 16:31:12 · 163 阅读 · 0 评论 -
字符串轮转 | leetcode算法学习
字符串轮转两种解法原创 2022-09-29 20:46:48 · 73 阅读 · 0 评论 -
两数相加 | leetcode算法学习
单链表的创建、简单功能、两数相加思路原创 2022-09-29 20:12:52 · 72 阅读 · 0 评论 -
两数之和 leetcode算法学习
查找表法原创 2022-09-28 10:43:35 · 56 阅读 · 0 评论