此题设快慢两个指针,先判断是否有环:如果为环快慢指针终会相遇; 找入口节点:快慢指针相遇的节点到入口节点的距离,与从头节点开始新的慢指针到相遇点的距离相同。 可画图演示。因为快指针是慢指针的两倍速,且他们在q点相遇,则我们可以得到等式 2(A+B) = A+B+C+B.得出C=A function ...
分类:
其他好文 时间:
2020-03-03 10:54:48
阅读次数:
61
题目链接:链表中倒数第k个结点 题意:输入一个链表,输出该链表中倒数第k个结点。 题解:两个指针,让其中一个先走k-1步,那后走的指针,走到倒数第k个时,前面一个就走完了! 代码: 1 /* 2 struct ListNode { 3 int val; 4 struct ListNode *next ...
分类:
其他好文 时间:
2020-03-03 01:22:24
阅读次数:
80
要求:给定一个链表,判断链表中是否有环。 方法:双指针. 又是双指针~~ 想象一下,两名运动员以不同的速度在环形赛道上跑步会发生什么? 算法 通过使用具有 不同速度 的快、慢两个指针遍历链表,空间复杂度可以被降低至 O(1)O(1)。慢指针每次移动一步,而快指针每次移动两步。 如果列表中不存在环,最 ...
分类:
编程语言 时间:
2020-03-03 00:54:59
阅读次数:
92
剑指offer替换空格: 请实现一个函数,将一个字符串中的每个空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。 思路:当我们从前往后进行替换时,每替换一个就要移动后面的所有字符,时间复杂度是0(n2) 我们可以从后向前替换,先 ...
分类:
移动开发 时间:
2020-03-02 18:51:39
阅读次数:
93
题目描述 输入一个链表,输出该链表中倒数第k个结点。 题解一:栈 1 public static ListNode FindKthToTail(ListNode head,int k) { 2 if(head==null||k<=0){ 3 return null; 4 } 5 Stack<List ...
分类:
其他好文 时间:
2020-03-02 15:05:27
阅读次数:
64
25.复杂链表的复制 题目 输入一个复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针指向任意一个节点),返回结果为复制后复杂链表的head。(注意,输出结果中请不要返回参数中的节点引用,否则判题程序会直接返回空) 思路 好繁琐一道题,用了三次遍历,赋值的时候用了三目运算 ...
分类:
其他好文 时间:
2020-03-01 12:52:06
阅读次数:
52
题目描述 输入一个复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针指向任意一个节点),返回结果为复制后复杂链表的head。(注意,输出结果中请不要返回参数中的节点引用,否则判题程序会直接返回空) 题解:Hashmap 1 public static RandomList ...
分类:
其他好文 时间:
2020-03-01 00:33:25
阅读次数:
52
开始学习的时候对这一类问题十分混乱,尤其是指针的调用,这里面引用一位leetcode大佬huwt的解析,觉得很好拿来分享一下。 也体会到了大佬的话:这种题就要多画图,寻找每一次过程的关系,多总结,就做好了,作为第二天leetcode的重头戏。 好理解的双指针定义两个指针: pre 和 cur ;pr ...
分类:
其他好文 时间:
2020-02-27 23:33:33
阅读次数:
66
看java的时候一直看到有 new() new() new()以为是JAVA特有,今天一上老师的数据结构课才知道,new()是C语言里也有的。。 求链表倒数第几个数 一开始想遍历出整个链表大小来记住结尾然后再遍历到结尾-M后来发现可以定义两个指针相隔M位置顺路一直让后面的指针末尾就行了。 1 Ele ...
分类:
其他好文 时间:
2020-02-27 20:59:53
阅读次数:
125
题目大意: 判断一个序列是否是另外一个序列删除若干个数字之后得到的。 正文: 我们可以定义两个指针,分别指向长序列和短序列。 拿样例来举例: 如果指针指的数相同,两个指针都往右跳: 如果不同,则指向长序列的指针往右跳: 以此类推。 超时,得分 $\texttt{30}$ 分。 考虑将长序列每一个出现 ...
分类:
其他好文 时间:
2020-02-26 19:00:31
阅读次数:
56