- 博客(8)
- 收藏
- 关注
原创 代码随想录算法训练营第十一天|第五章 栈与队列part01 part02
思路:1.想要保证实现“有效的括号”,那么就要配对,即需要先入后出---->栈2.需要检查什么样的错误:括号得不到匹配(落单);类型匹配不对;括号多余/冗余3.ps:虽然匹配的是相同的类型,但是也存在左右之分,故应该有六种,同时左必先于右。
2024-03-16 13:38:20
495
1
原创 代码随想录算法训练营第七天|第三章 哈希表part02
nums[left] nums[left + 1] nums[right] nums[righ - 1] 是否重复。,目前按照我的水平,都算比较难的题目,一时也没有思路,只能按照对随想录的理解学习,权当做笔记了.(三数之和)2.因为要求记录个数,那么应该采用map类型了,key 用来记录 两数和, value 用来记录出现的次数。1.采用双指针法,在for循环中,先固定起始的一个数后,再移动两个指针,求和后判断与0的关系;,对i 进行剪枝操作,即第一个元素大于零,之后的元素之和不可能小于零.
2024-03-12 11:32:58
408
1
原创 代码随想录算法训练营第六天|第三章 哈希表part01
根据题目要求,需要进行求和操作;整体思路,将一个数组转换为哈希表,遍历另一个数组,并将两者进行判断(find函数),如果能够在哈希表中找到,则说明存在交际,即存储起来.判断是否有满足要求的两个加数,将求和转换为求差,即target 与 nums[i] 做差进行计算,然后判断是由有满足条件的已经在里面了。字母顺序用0-26,比较出现次数可以用加减法实现,即一个字符串++,另一个字符串--,最后看总体的记录结果是怎样.本次的哈希表即运用在判断是否重复上面,.记录下每个不为1的结果,并提供下一次的判断;
2024-03-11 11:50:24
591
原创 代码随想录算法训练营第四天|第二章 链表part02
2.使用两个指针,他们两个的差距就是n.------>快慢数组;怎样实现它们之间的差距,让快的先走,然后再一同前进,直到走到最后.eg: 1->2->3->4 变成 2->1->4->3 需要断开1 2;ps:关于是选择curA 还是 curA->next 进行判断,应该是看其初始指向是dummy还是head.2.交换节点就是实现指针指向的改变.要做好每个节点指针的维护,不能在更改指针指向时丢失。1.一旦相较,那么之后的节点地址就一定是相等的.----->只能通过完全遍历来实现。
2024-03-09 21:37:21
739
1
原创 代码随想录算法训练营第三天|第二章 链表part01
思考:仍然需要双指针,一个指针用来指示断开原链接时,下一个的位置,一个用来指示建立新链接时,需要指向的位置.1.这道题比较繁复,只能一个个类函数去分析,队友给定条件进行判断,或删除,或增加;------->为头节点再加一个头结点.:通过指针串联在一起的线性结构,由数据域和指针域组成;进行临近元素的查找工作(这也是进行基本数据处理的核心)1.对该链表进行遍历操作,删除等于给定值的元素;添加和删除节点都是需要对指针进行操作.2.通过对指针的操作完成删除目标;遇到了一种新的数据结构---链表。
2024-03-08 16:54:25
404
1
原创 代码随想录算法训练营第二天|双指针
977.有序数组的平方有序数组的平方思路:1.由于负数的平方是正数,因此数组顺序不能沿用原来的,同时为了避免数组覆盖,应该创建一个新的数组并对其进行排序;2.为了比较左边(倾向为负数)和右边(倾向为正数)平方后的大小,“双指针”应该从两侧向中间移动,而不是类似于快慢指针一样,从单侧移动,然后先存储大的元素;3.考虑循环中的“=”问题,可以调试的时候检查一下。ps:暴力解法:先平方,后排序。right--;// i--;// i--;
2024-03-07 20:38:33
1201
原创 代码随想录算法训练营第一天|二分查找,双指针
自以为没问题,但却一直运行出错,最后debug才意识,采用for循环并结合左右边界i,j的形式,实际上会使得for的每一次循环,都会重置对i的赋值,即i++,而不能实现i=n+1的操作,而导致错误。而更加灵活关键的是,从题目中要求的 ”移除数值与val相等的元素“ 转换为用不相等的元素来判断。2.什么时候选择i<=j的情况,即左右边界都为闭区间,即i=j,数组能取到有意义的值的时候。一开始的思路还是没有完全整理好,顾名思义,就直接考虑了二分查找的方式,而没有考虑暴力解法。
2024-03-06 22:01:21
1108
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人