环形链表题目来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/linked-list-cycle-ii目前考虑到两种解法,但都需要辅助空间,第一种O(n)第二种O(1)第一种借助辅助字典进行判断将走过的节点都记录在字典中,通过查询字典的key值是否存在来确定是否有环时间复杂度为O(n),空间复杂度为O(n)代码如下:#-*-coding:utf-
分类:
编程语言 时间:
2019-12-08 23:17:56
阅读次数:
149
单链表中的环。题意很简单,找出链表中是否有环。例子,这样就是有环的。 思路是用快慢指针,慢指针每走一步,快指针走两步。如果快慢指针在某个地方相遇了,说明有环;否则快指针就会遍历到链表尾部从而会退出循环。 时间O(n) 空间O(1) 1 /** 2 * @param {ListNode} head 3 ...
分类:
其他好文 时间:
2019-11-10 10:13:35
阅读次数:
77
求链表的第一个公共节点主要思想 有如下两个链表: 有以下两种方法 1. 上述链表,有一种蛮力方法,就是从一个链表中每一个节点,与另外链表中的节点,去比较, 如果从中找到相同的节点,表示有公共节点,这个算法时间复杂度为O(n m),两个链表的长度分别为n,m 2. 如果使用快慢指针,让链表长的指针,先 ...
分类:
其他好文 时间:
2019-10-22 09:11:49
阅读次数:
79
用两个指针fast和slow指针(快慢指针),开始的时候指针都指向链表的Head节点,然后在每一步的操作中slow向前走一步:slow = slow.Next,而fast就向前走两步 :fast = fast.Next.Next;快指针fast由于比慢指针slow快,所以fast一定比slow先进入 ...
分类:
其他好文 时间:
2019-10-21 11:52:19
阅读次数:
80
大致思路是选择一个pivot元素, 然后比它的排在其右边,小的排左边。 一般需要两个下标标记。 5 6 7 1 3 2 5 :选择5为pivot。 i/big 5 6 7 1 3 2 5: i/big 5 6 7 1 3 2 5 i big //swap(i, big) 5 6 2 1 3 7 5 ...
分类:
编程语言 时间:
2019-10-16 11:33:56
阅读次数:
83
剑指offer 链表中倒数第k个结点 输入一个链表,输出该链表中的倒数第k个结点。 考察知识点:快慢指针问题 ...
分类:
其他好文 时间:
2019-10-11 18:08:45
阅读次数:
66
第一种方法:直接遍历时,用hashset存放,判断是否存在环 第二种方法:使用快慢指针 ...
分类:
其他好文 时间:
2019-10-09 12:47:57
阅读次数:
81
第一种方法: 额外空间复杂度O(N) ,遍历链表时,将元素入栈,再次遍历时,从栈中弹出元素,比较两者的大小,就可以判断是不是回文链表第二种方法:利用快慢指针,先找到链表的中间位置,然后反转链表的后半部分,再分别从链表两头遍历比较大小,最后将链表恢复为原始结构 ...
分类:
其他好文 时间:
2019-10-08 18:39:39
阅读次数:
114
1、思路:自己想出来的是暴力法,用到双指针p1,p2;看了解析还有一种快慢指针法,慢指针走一步,快指针走两步!!分奇偶讨论! 第一个指针p1历求出链表的长度n 考虑到n的奇偶性质 如上图所示 2、暴力代码 3、快慢指针解法(也可以用来求链表最后n个结点) ...
分类:
其他好文 时间:
2019-10-07 17:57:56
阅读次数:
105
题目: 给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。 不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。 示例 1: 给定数组 nums = [1,1,2], 函数应该返回新的长度 2, 并且原数组 num ...
分类:
编程语言 时间:
2019-10-04 21:15:27
阅读次数:
124