算法训练营Day3

反转链表,使用双指针的思想,创建两个指针pre、cur,cur指针指向要反转的那个链表,pre指向前一个,令cur->next = pre,就实现了反转操作,中间需要一个临时指针保存cur->next。按照同样的原理也可以使用递归去进行反转。
https://leetcode.cn/problems/reverse-linked-list/submissions/644015000/

两两交换链表中的节点,涉及到链表多个指针的操作时要去画图,不然容易乱,非常容易空指针报错,还有边界问题要考虑清楚,涉及到链表的问题就可以去考虑加上虚拟头节点,会方便很多。通过这题再一次复习了递归的思想,这方面还是很薄弱。
https://leetcode.cn/problems/swap-nodes-in-pairs/

删除链表的倒数第N个节点。第一次写这道题的时候独立写出来了,对链表的操作已经有了一点概念。这道题有两个新颖的思想可以学习,可以使用栈来写这道题,先全部入栈,倒数第n个节点就是出栈n个节点,符合栈的思想。还可以使用快慢指针的思想,快指针比慢指针多走n步,然后快慢指针一起走,当快指针指向null的时候,慢指针正好指向倒数第n个链表。
https://leetcode.cn/problems/remove-nth-node-from-end-of-list/solutions/450350/shan-chu-lian-biao-de-dao-shu-di-nge-jie-dian-b-61/

链表相交。可以先计算两个链表长度的差值,然后使两个遍历链表的指针在同一位置上,然后再进行比对。还有一种数学思想很巧妙,也是双指针,两个长度不一样的链表,加起来长度就变成相等的了,所以可以让两个指针同时开始遍历,遍历完一个链表后指向下一个链表的头指针,直到两个指针相等(没有交点,就会同时指向null)。
https://leetcode.cn/problems/intersection-of-two-linked-lists-lcci/solutions/1395092/lian-biao-xiang-jiao-by-leetcode-solutio-2kne/

*环形链表II。寻找环形链表的入口,使用快慢指针,快指针走两步,慢指针走一步,当快慢指针相遇的时候,说明该链表一定有环且一定再环内相遇。经过数学推导,一个指针在head出发,一个指针在快慢指针相遇位置出发,一起走会在环的入口处相遇。此思想非常巧妙,很容易解决环形链表问题。也可以使用哈希表,空间复杂度会达到O(n),快慢指针的空间复杂度是O(1)。
https://leetcode.cn/problems/linked-list-cycle-ii/submissions/644123115/

有效字母异位词。使用哈希法去做,因为只有26个字母考虑用数组记录字母出现的次数。c++中读取字符串中的字符,可以直接使用索引去查找,如s[i]。
https://leetcode.cn/problems/valid-anagram/description/

两个数组的交集。使用哈希法要选取合理的数组结构。我现在对于set等容器的api不熟悉,需要多练。unordered_seta(nums.begin(),nums.end())可以将vector nums直接遍历转化为unordered_set
https://leetcode.cn/problems/intersection-of-two-arrays/

快乐数。不熟悉如何进行数位分离。分离每一位数字:通过不断取模 (% 10) 和整除 (/ 10) 来分解数字。
https://leetcode.cn/problems/happy-number/description/

两数之和。map.insert({key,value})。在 C++ 的关联容器(如 std::map、std::unordered_map)中,iter->second 用于访问迭代器指向元素的 value 部分(即键值对中的值)。map[key]也可以访问value,若键不存在会自动插入并初始化为0。
https://leetcode.cn/problems/two-sum/solutions/434597/liang-shu-zhi-he-by-leetcode-solution/

四数相加。将其分组变成另类的两数相加的问题,然后再用哈希表。
https://leetcode.cn/problems/4sum-ii/solutions/499745/si-shu-xiang-jia-ii-by-leetcode-solution/

赎金信。与有效字母异位词相似,设定一个数组来使用哈希表。
https://leetcode.cn/problems/ransom-note/description/

posted @ 2025-07-16 08:46  泡泡鱼骨头  阅读(13)  评论(0)    收藏  举报