问题描述 怎么能够更高效地判断一个链表是否有环呀? 首先创建两个指针p1和p2(在Java里就是两个对象引用),让它们同时指向这个链表的头节点。 然后开始一个大循环,在循环体中,让指针p1每次向后移动1个节点,让指针p2每次向后移动2个节点,然后比较两个指针指向的节点是否相同。如果相同,则可以判断出 ...
分类:
其他好文 时间:
2019-12-07 21:28:10
阅读次数:
96
题目 给定一个链表,判断链表中是否有环。 为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。 示例 1: 输入:head = [3,2,0,-4], pos = 1 输出:true 解释:链表中有一个环,其 ...
分类:
其他好文 时间:
2019-12-04 13:16:10
阅读次数:
85
输入一个复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针指向任意一个节点),返回结果为复制后复杂链表的head。(注意,输出结果中请不要返回参数中的节点引用,否则判题程序会直接返回空) 解题思路:两边循环: 1:第一遍开两个数组,第一个存在每个节点,第二个存在每个节点值 ...
分类:
其他好文 时间:
2019-11-28 13:16:55
阅读次数:
72
题目: 输入一个复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针指向任意一个节点),返回结果为复制后复杂链表的head。(注意,输出结果中请不要返回参数中的节点引用,否则判题程序会直接返回空) 分析: 拷贝一个带有random指针的链表。 首先想到的便是,复制原链表的的 ...
分类:
编程语言 时间:
2019-11-25 23:53:31
阅读次数:
89
PAT,乙级,1030,完美数列,题目,链接,输入样例,输出样例,题解,C语言,代码,滑动窗口,双指针。 ...
分类:
编程语言 时间:
2019-11-22 23:25:03
阅读次数:
80
题目: 输入一个链表,输出该链表中倒数第k个结点。 分析: 第一个解法,我们可以先遍历一遍链表,计算下节点的总数n,然后再从头结点查n-k个节点,即是倒数第k个节点。 第二个解法,便是使用双指针,两个指针都先指向头节点,第一个指针先前进k-1个节点,然后两指针一起前进,当第一个指针到达尾节点时,第二 ...
分类:
编程语言 时间:
2019-11-17 23:37:32
阅读次数:
117
思路:思路一: 利用两个指针进行遍历。在代码里解释.时间复杂度为:O(mn)O(mn)O(mn)思路二: 动态规划dp[i][j]表示s到i位置,p到j位置是否匹配!初始化: dp[0][0]:什么都没有,所以为true 第一行dp[0][j],换句话说,s为空,与p匹配,所以只要p开始为*才为tr ...
分类:
其他好文 时间:
2019-11-17 10:43:31
阅读次数:
58
单链表中的环二。题意是给一个链表,如果这个链表中有环,请return环的起点;若没有,return null。找是否有环可以参照[LeetCode] 141. Linked List Cycle的讲解。至于怎么找到环的起点,我这里引用一个非常好的讲解,https://www.cnblogs.com/ ...
分类:
其他好文 时间:
2019-11-10 10:25:40
阅读次数:
96
一 双指针遍历 所谓双指针,是利用两个指针对一个有序数组进行遍历,查找出符合要求的数据集合。相信大家都接触到了这种思维模式的解题方法,只是没有注意到罢了。下面举几个例子吧。 例1:给定一个数组a[n],求数组中是否存在两个数的和等于给定值sum并输出? 这个问题很常见,我当年在面试微软实习生的时候就 ...
分类:
其他好文 时间:
2019-11-09 19:45:41
阅读次数:
145
/** * 使用两个指针i和j,初始化均为0。然后j往后遍历,若遇到了奇数,则将 A[j] 和 A[i] 交换位置,同时i自增1,这样操作下来,同样可以将所有的偶数都放在奇数前面 * */ public class SortArrayByParity { public static void mai ...
分类:
编程语言 时间:
2019-11-06 15:22:06
阅读次数:
98