- 博客(18)
- 收藏
- 关注
原创 代码随想录day13(力扣239.滑动窗口最大值&347.前K个高频元素)
在整个过程中,我们需要保持队列的单调递减特性,为此,我们每次往队列中添加新元素时,需删除所有在他前面并且比他小的值。每当窗口移动时,判断窗口左边界值是否等于我们的队首元素,若相等我们需要将队首元素移出。方法一:使用计数排序的一个思路,借用哈希表和链表数组来实现。借用数组来进行排序,然后根据下标来返回高频元素。具体过程如上图所示,我们让窗口从1-k的位置出发。1.借用哈希表来统计元素的种类和元素出现的次数。1.统计元素种类和每种元素出现的次数。3.返回前k个出现的高频元素。基于上述上述思路不然想到。
2024-03-18 20:37:19 761
原创 代码随想录Day11(20.有效的括号&1047.删除字符串中的所有相邻重复项&150.逆波兰表达式求值)
如果满足这两个条件之一,说明 c 不是与栈顶相邻的重复字符,因此我们将c 入栈。如果栈不为空且栈顶元素与 c 相同,说明 c 是与栈顶相邻的重复字符,我们执行出栈操作,即 stack.pop(),以去除这个重复字符。具体做法是利用栈的特性,在遍历字符串时,根据栈顶元素与当前字符的对比,决定是否将当前字符入栈。最后,由于栈是反向存储的,我们需要调用 StringBuilder 的 reverse() 方法来反转字符串,得到最终的结果。如果栈不为空,则说明还有未匹配的左括号,将变量 a 设置为 false。
2024-03-16 18:52:45 1390 1
原创 代码随想录day07
使用双指针的一个思想,让左右两个指针从字符串的两端出发,交换其对应的值,交换完成后,向中间靠拢,直至二者相遇。使用双指针来寻找单词,然后将单词自后向前放入新字符串中以实现反转的目的。
2024-03-13 17:45:04 215 1
原创 代码随想录Day06(力扣242.有效的字母异位词&349.两个数组的交集&202.快乐数]&1.两数之和)
快指针” 每次走两步,“慢指针” 每次走一步,若两个指针最后能相遇,则说明这个数组存在循环,不符合快乐数的要求;
2024-03-11 20:14:49 774 1
原创 代码随想录day03(力扣:203.移除链表元素&707.设计链表&206.反转链表)
在上一个方法中我们需要单独为头结点做单独考虑,所以我们可以创建一个新的头结点,使原来的头结点变为一个普通节点,而且由于新的头结点是我们创建的所以肯定不为空。在该程序中尤其要注意最后的node.next=null,如果没有该部分,将会导致该程序变为一个环。看到反转二字,第一时间想到的就是利用栈来实现(栈的先进后出,完美实现了倒转)这一题基本就是链表的一些基础操作。
2024-03-08 19:37:02 193
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人