- 博客(8)
- 收藏
- 关注
原创 代码随想录day11 栈的应用
本来以为这个需要多次循环去找,结果看了答案发现只需要一次放入stack,因为stack栈头元素可以是实时变动的。(当删除相邻元素后)非常惊喜!特别有趣的一件事,因为stack有出栈,所以size变了,所以stack.size()这个判断条件一直在变化,所以循环总是不能遍历完所有元素。1047. 删除字符串中的所有相邻重复项。所以遍历stack还是静态的好。150. 逆波兰表达式求值。碰到操作符就取出两个数进行操作。栈的应用还是相对简单的。
2024-03-19 19:45:55
162
原创 代码随想录 day10 模拟队列与栈
队列就转起来,从队头出队尾进,进行size-1次循环,这时候队头就是要的元素。所以借另一个栈为临时容器,把整个栈输出到临时容器,找到栈底元素,再装回去。就是队列取是取最早进去的那个,所以栈就得拿栈底的那个;栈是取最新进去的那个,队列的最新的元素在队尾。
2024-03-19 16:44:38
212
原创 代码随想录day8、9 字符串
这题首先要进行单词切分,存到string[]里面去,然后再倒过来合并成一个字符串。这题就是只翻转部分字符串,可以通过for循环的i+=2k来实现,找到翻转的起点。这个没做,用stringbuilder replace函数应该不难。就是双指针指向前后两端,进行交换。整体翻转+局部翻转就可以实现。151.翻转字符串里的单词。541. 反转字符串II。卡码网:54.替换数字。
2024-03-19 10:21:45
183
原创 代码随想录day7 哈希表-2
454.四数相加II怎么说,从答案上来说确实是和两数之和特别像的一道题,哈哈哈。学到了一个函数是 Java 中的一个方法,用于从给定的Map中获取与指定键关联的值,如果该键不存在,则返回一个默认值。举例来说,假设有一个对象map,通过调用,可以获取与键为"key1"关联的值,如果该键不存在,则返回默认值0。用于搜索该map里的元素,同时不存在也不碍事。
2024-03-18 21:58:22
384
原创 代码随想录day6 哈希表-1
就是说判断每个字符串里的字母个数是否相同,思想不难,主要是java关于数组和string的用法需要学习一下。注意点:set不能用下标进行访问,直接 for(element:set)进行遍历。2.判断一个元素是否在别人数组里出现,最好用set里的contains方法。ArrayList不能直接使用下标进行访问和更新。1.String长度用length() ,包装类用size()1.答案要求不能重复,所以结果存在set里是最好的。3. int数组固定长度定义 ,如代码所示。考虑一次遍历的方法,用map存储。
2024-03-14 16:04:36
166
原创 代码随想录day4 链表
24. 两两交换链表中的节点由于两两交换是一个固定重复的操作,所以这里使用递归调用,采用next指向递归调用的写法。19.删除链表的倒数第N个节点 (>10min)[]对于这个测试用例,难一点,因为头结点就是要删除的对象,你返回的时候不能直接返回head,可以返回head.next.
2024-03-14 11:27:30
371
原创 代码随想录day3 链表第一天
还是没有很快想清楚反转的逻辑,比如要不要虚拟节点,从哪个节点开始反转。应该从第一个节点的next指针开始翻转,将这个next指针指向p(null),所以逻辑是每到一个节点,就进行next指针指向前一个节点。有问题的地方在于当删除节点后,p节点的next指针已经跳到下一个节点了,这时候p节点不能同时到下一个节点;因为删除指针是判断next节点,而新next还没有被判断过,所以p节点呆在原地,等待下一循环判断。主要练习如何删除链表元素,设定一个虚拟节点,这样全部都是统一的操作。203.移除链表元素。
2024-03-13 11:07:57
169
原创 代码随想录day1、2 数组
我个人觉得掌握一个就行了,选择了左闭右闭。停止条件时,一定是right在前,left在后的退出状态,而left right的夹缝中,就是要插入的位置,不然呢,最后肯定是在正确位置附近转啊。Right left移动到最后肯定都会重合,不管重合在6节点还是8节点,最后都会变成下面这个,然后退出。还有一点:mid的计算:mid=left+(right-left)/2;位运算的写法是防止left+right溢出;重要问题intmid1如果写成intmid1;
2024-03-07 17:01:35
511
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人