刷题日记
文章平均质量分 70
草莓味夹心小饼干
这个作者很懒,什么都没留下…
展开
-
栈和队列题目记录(二)
232. 用栈实现队列 225. 用队列实现栈原创 2021-11-28 16:27:18 · 195 阅读 · 0 评论 -
滑动窗口之LeetCode209长度最小的子数组
于2021.11.26练习 题目链接 1.1 解法1:暴力解法之两次遍历 思路:首先初始化这个子组的最小长度为Integer.MAX_VALUE,然后遍历数组的每一个下标作为子组的第一个元素,对于每一个开始下标i,需要找到大于或等于i的最小下标j,使得从nums[i]到nums[j]这个区间内元素之和大于target。如果找到了大于target,就更新最小长度,同时break操作,意味着j下标不用在往下遍历了,因为这个数组全都是正整数,再往后相加只会越来越大。 我自己写的时候,初始化最小长度为nums.le原创 2021-11-26 21:51:57 · 233 阅读 · 0 评论 -
栈和队列题目记录(一)
于2021.11.25记录。 栈的特性:先入后出,入栈和出栈操作只能在栈顶完成 队列的特性:先入后出,入队是在队尾实现的,出队是在队头实现的。 1. java中常用的方法总结 下面以java语言为例,列出来了栈和队列中一些常用的方法,后面刷题中也会用到这些方法。 (1)栈的常用方法 方法 作用 Stack() 定义一个空栈 boolean empty() 判断堆栈是否为空 Object push(Object element) 把元素压入堆栈顶部 Object pop( )原创 2021-11-26 21:39:34 · 211 阅读 · 0 评论 -
LeetCode876 链表的中间结点
于2021.11.19练习 题目链接 1.1 解法1:两次遍历 思路:第一次遍历获取链表的长度length;那么length/2就对应着中间结点在链表中的索引(对于奇数个元素中间结点正好是中间值,对于偶数个元素中间结点是后面的那个值),于是第二次遍历,找到这个中间结点。 class Solution { public ListNode middleNode(ListNode head) { int length = getLength(head); ListNode原创 2021-11-20 09:49:28 · 66 阅读 · 0 评论 -
LeetCode1047 删除字符串中的所有相邻重复项
于2021.11.17练习 题目链接 本题其实是一个“开心消消乐”的问题,下面展示了两种解法。 1.1 解法1:常规解法之栈 1.1.1 思路 思路:因为要删除的重复项是两个相邻且相同的字母,故每次都要比较当前元素和上一个元素,因此想到用栈。 首先遍历当前字符串,当遍历到某一个字符时,先判断该字符和栈顶元素是否相等,如果相等,就将栈顶元素弹出;如果不等或者此时堆栈为空,就将该字符入栈。 最后遍历完成后,将栈中的字符倒着输出。一开始我写的是res += stack.pop(),这种写法相当于res = res原创 2021-11-17 22:41:09 · 431 阅读 · 0 评论