题目链接如下: https://leetcode-cn.com/problems/remove-nth-node-from-end-of-list/ 本题使用了如下两个方法: 哑结点:若给定的链表中没有空的头节点,设置一个哑结点在第一个结点前面,最后在删除掉。 如: 题目中给定 head 作为链表的 ...
分类:
其他好文 时间:
2021-06-15 18:34:04
阅读次数:
0
寻找重复数 根据题意,数组中的数字都在1~n之间,所以数字的范围是小于数组的范围的,数组的元素可以和数组的索引相联系。 例如:nums[0] = 1 即可以将nums[0]作为索引 通过nums[0] 可以访问到nums[1],以此类推。 如左图所示,环的入口就是重复元素。 那么问题就转化为了如何找 ...
分类:
编程语言 时间:
2020-05-27 01:07:44
阅读次数:
75
链表的排序有很多方式,这里记录一下归并排序,关键点2个: 归并排序的过程和快慢指针法找中间结点,直接上代码。 class Solution { public: ListNode* sortList(ListNode* head) { if (!head || !head->next) return ...
分类:
编程语言 时间:
2020-04-06 17:33:04
阅读次数:
92
本篇博客旨在总结双指针法在剑指offer链表题中的应用 包括删除链表中重复的节点、链表中倒数第k个节点、链表中环的入口节点、反转链表、合并两个排序的链表、两个链表的第一个公共节点。 根据双指针的类型,可以大致分为三种: 第一种是间隔一定距离的双指针法,包括删除链表中重复的节点、链表中倒数第k个节点两 ...
分类:
其他好文 时间:
2020-03-04 22:43:21
阅读次数:
80
1、思路:自己想出来的是暴力法,用到双指针p1,p2;看了解析还有一种快慢指针法,慢指针走一步,快指针走两步!!分奇偶讨论! 第一个指针p1历求出链表的长度n 考虑到n的奇偶性质 如上图所示 2、暴力代码 3、快慢指针解法(也可以用来求链表最后n个结点) ...
分类:
其他好文 时间:
2019-10-07 17:57:56
阅读次数:
105
题目描述 输入一个链表,输出该链表中倒数第k个结点。 解题思路 使用快慢指针法,让快指针先走k步,然后再让慢指针开始走,当快指针到达链表尾部时,慢指针刚好到达倒数第k个节点。 C++代码实现: /* struct ListNode { int val; struct ListNode *next; ...
分类:
其他好文 时间:
2019-09-30 23:17:33
阅读次数:
113
一、判断单链表是否存在环 这个问题有很多方法,最容易想到的就是记录每个节点记录的次数。这里也介绍的是另一种简单而常见的方法 快慢指针法: 定义两个指针slow, fast。slow指针一次走1个结点,fast指针一次走2个结点。如果链表中有环,那么慢指针一定会再某一个时刻追上快指针(slow == ...
分类:
其他好文 时间:
2018-09-09 00:41:39
阅读次数:
179
最近算法题也刷了不少,小有感悟。 我觉得刷题时一般的思维方式是迭代思维。就是我们老是想着通过循环,通过顺序解决下一个来迭代解决整个问题。 典型事例有:2Sum, 3Sum, 排序问题,以及用双指针或快慢指针法解决的问题。 迭代思维是一种很直接的思维方式,但绝不简单,因为找到正确的循环方式并不是一件容 ...
分类:
编程语言 时间:
2017-08-16 18:23:28
阅读次数:
178
Question:Given a linked list, determine if it has a cycle in it.Follow up:Can you solve it without using extra space?Analysis:思路一:快慢指针法。前面用到过快慢指针寻找链表的...
分类:
其他好文 时间:
2015-09-12 21:45:14
阅读次数:
109