java-leetcode100
java
小小皮卡丘啃算法
这个作者很懒,什么都没留下…
展开
-
19.删除链表的倒数第N个结点
使用快慢指针,慢指针比快指针晚出发n步.如图所示,当快指针到达链表尾部的时候,slow指针刚好到达要删除的结点的前一个结点。此时的删除语句: slow.next = slow.next.next。但是上述代码存在的问题在于,当需要删除头结点的时候出现错误。因此为了删除头结点需要创建一个dummy空结点,dummy.next = head 这时候就可以删除头结点了。给你一个链表,删除链表的倒数第。个结点,并且返回链表的头结点。原创 2024-06-07 20:25:01 · 209 阅读 · 0 评论 -
240.搜索二维矩阵
---如果想做该算法,需要搞清楚的事情是。当中间值 小于 target时候,需要查找的三个象限为左上、左下、右上;当中间值 大于 target 的时候,需要查找的三个象限为右上、左下、右下。------耗时太长了,还不如每一行使用二分查找。但是做一点点小小的优化,只有当每一行的第一个元素 小于 target , 并且 最后一个元素 大于 target 的时候,才进行二分查找。想编写一个二维二分查找的算法,就是说将二维矩阵分为四个象限,根据中间值的大小判断要搜索的区域。原创 2024-06-05 12:24:53 · 378 阅读 · 0 评论 -
189.轮转数组
将原始数组拆分为两个部分:前k 和 后n-k。并且将后面的元素先存在,前面的元素往后移,再将额外存储的元素添加到数组的前端。向右轮转 1 步: [99,-1,-100,3]向右轮转 2 步: [3,99,-1,-100],将数组中的元素向右轮转。原创 2024-06-03 19:57:03 · 216 阅读 · 0 评论 -
56.合并区间
—为了方便计算,最好的方法是先给数组按照第一个元素排序,如何再判断是否区间重合。区间重合的判断就是,前一个元素的第二个元素 大于或者等于 后一个元素的第一个元素, 即。从头开始往后合并区间,因为合并后的区间还需要考虑是否能和下一个区间合并。因此最好的办法是将合并后的结果,放置在后面的位置,再往后合并。区间 [1,3] 和 [2,6] 重叠, 将它们合并为 [1,6].一个不重叠的区间数组,该数组需恰好覆盖输入中的所有区间。区间 [1,4] 和 [4,5] 可被视为重叠区间。原创 2024-06-03 19:21:06 · 121 阅读 · 0 评论 -
239.滑动窗口的最大值
结果存储,创建长度为 i - k + 1 长度的数组,当i >= k - 1 的时候就可以开始将对头下标对应的元素添加到数组中,此时数组的下标为i - k + 1。-入队的原则是, 当队列不为空并且nums[i]元素 大于 队尾元素的时候,nums[i] 挤掉队尾元素,成功入队。-出队的原则是,当 队列不为空并且对头元素是 i - k 的时候,也就是窗口滑倒最大元素所在的下标位置时候,元素出队。多建立一个双端队列,保证对头的元素始终是最大的元素。的滑动窗口从数组的最左侧移动到数组的最右侧。原创 2024-06-01 20:42:31 · 279 阅读 · 0 评论 -
438.找到字符串中所有字母异位的子串
利用一个目标子串大小的窗口滑动,每次对滑动窗口中包含的字符串计数,若是与目标相同,则返回下标。起始索引等于 0 的子串是 "cba", 它是 "abc" 的异位词。起始索引等于 6 的子串是 "bac", 它是 "abc" 的异位词。起始索引等于 0 的子串是 "ab", 它是 "ab" 的异位词。起始索引等于 1 的子串是 "ba", 它是 "ab" 的异位词。起始索引等于 2 的子串是 "ab", 它是 "ab" 的异位词。的子串,返回这些子串的起始索引。技巧在于,利用一个长度为26的数组来存储计数。原创 2024-05-30 15:21:36 · 159 阅读 · 0 评论 -
3.无重复字符的最长子串
3.当出现重复的时候,先计算当前队列的长度,更新最大子列的长度。并且从队头不断弹出元素,直到将重复的元素弹出,这时候再将重复元素入队。2.当没有重复元素的时候,元素从队尾进入队列。4.重复上述操作,直到所有元素都完成一次遍历。,请你找出其中不含有重复字符的。请注意,你的答案必须是。因为无重复字符的最长子串是。因为无重复字符的最长子串是。因为无重复字符的最长子串是。1.考虑队列,可以双端操作。,所以其长度为 3。,所以其长度为 1。,所以其长度为 3。原创 2024-05-30 11:09:08 · 172 阅读 · 0 评论 -
42.接雨水
再left = right 迭代。按照栈的处理顺序应该是闲处理(2,0,2)这个凹陷,只要在处理凹陷后保持大凹陷为(3,2,3)表示,大凹陷有一个高度为2的底面。这个的问题在于,当最初始的left为最大元素,而right到达边界也不能大于或等于原始left元素,但是载该内部有小凹陷可以存在雨水,也就是需要对于边界条件进行处理。上面是由数组 [0,1,0,2,1,0,1,3,2,1,2,1] 表示的高度图,在这种情况下,可以接 6 个单位的雨水(蓝色部分表示雨水)。---------单调栈---------原创 2024-05-27 17:24:04 · 348 阅读 · 0 评论