![](https://img-blog.csdnimg.cn/20201014180756913.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
LinkList
小陈大人
没有对象那就new一个
展开
-
876. Middle of the Linked List
原题题目描述:返回一个链表的中间位置,若中间位置有两个,则返回更后的那个思路:用快慢指针,慢指针一次移动一步,快指针一次移动两步,当快指针移动到链尾或者为null时,返回慢指针即可注:按题目意思应该要按链表元素个数的奇偶数来分,当是奇数时,直接返回慢指针,当为偶数时,应该返回慢指针的下一个元素,但我这代码不管奇偶都直接返回慢指针,竟然也过了,玄学啊!/** Definition...原创 2018-08-15 15:17:54 · 113 阅读 · 0 评论 -
24. Swap Nodes in Pairs
原题题目描述: 给定链表,交换每两个相邻节点并返回其头部。思路: 自己构造一个头结点,定义一个cur指针,指向头结点.定义两个指针first和second遍历链表,first指向cur.next,second指向cur.next.nextfirst.next指向second用cur指针串联起链表,即cur.next指向second,second.next指向firstcur指向f...原创 2018-08-21 11:29:51 · 760 阅读 · 0 评论 -
160. Intersection of Two Linked Lists
原题题目描述:判断两个链表是否有公共结点,有则返回相交结点,否则返回null思路:我们可以设两个指针,各自指向a,b链表,两者不相等时循环,当a,b指向null时,则让它们指向另一条链表的头结点,这样当链表相交时,两指针总会在第二次遍历时在相交结点相遇,若不想交,则会在第二次遍历时同时指向null/** * Definition for singly-linked list....原创 2018-08-17 20:20:04 · 114 阅读 · 0 评论 -
234. Palindrome Linked List
原题题目描述:判断一个单链表是否为回文链表思路:先用用快慢指针,找到链表的中间位置,若链表有奇数个元素则找到中间位置的后一位,然后反转后一部分链表,反转完毕后前后两部分进行遍历比较,若数据域全相同,则是回文链表,反之则反 bool isPalindrome(struct ListNode* head) { struct ListNode* fast=head; ...原创 2018-08-17 15:45:55 · 104 阅读 · 0 评论 -
203. Remove Linked List Elements
原题题目描述:删除链表中所有数据域等于给定值的结点思路: 可以用递归,若当前结点元素等于给定值则返回下一个结点,否则返回当前结点还可以自己构造头结点,进行迭代删除递归法/** * Definition for singly-linked list. * struct ListNode { * int val; * struct ListNode *ne...原创 2018-08-17 13:32:31 · 140 阅读 · 0 评论 -
141. Linked List Cycle
原题题目描述:判断一个链表是否有循环思路: 定义快慢指针,慢指针走一步,快指针走两步,若两者能相遇,则有循环或者用java里的哈希表,把每个节点的引用存入表中,若访问节点在表中存在则有循环,若因为指针指向空而退出,自然安不存在循环/** * Definition for singly-linked list. * struct ListNode { * int va...原创 2018-08-17 08:56:23 · 214 阅读 · 0 评论 -
328. Odd Even Linked List
原题题目描述:把一个链表奇数节点先放一起,然后再把偶数节点穿起来思路:定义两个指针,各自走两步,改变相应的指针域即可,特别注意循环条件/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode(int...原创 2018-08-19 15:25:54 · 168 阅读 · 0 评论 -
445. Add Two Numbers II
原题题目描述: 给你两个链表,把他们的元素值各自当成一个整数,然后相加得到的值返回一个链表(注:每个节点位置只放一个数字)思路: 把两个链表压入栈中若栈不为空,从两个栈中取值,和节点值的三者和,与10的商作为结果链表的值,与10取余,得到的值作为下一个值的进位/** * Definition for singly-linked list. * public class L...原创 2018-08-19 09:20:30 · 169 阅读 · 0 评论 -
83. Remove Duplicates from Sorted List
原题题目描述:有序链表中删除重复元素思路:相邻元素若相等,则让指针域指向下下个结点,不相等才让指针继续遍历链表/** * Definition for singly-linked list. * struct ListNode { * int val; * struct ListNode *next; * }; */struct ListNode* ...原创 2018-08-16 19:56:00 · 113 阅读 · 0 评论 -
21. Merge Two Sorted Lists
原题题目描述: 把两个递增有序链表,融合成一个递增有序链表思路:常规的思路就不说了,这里介绍用递归实现,代码优雅,啧啧/** * Definition for singly-linked list. * struct ListNode { * int val; * struct ListNode *next; * }; */struct ListNo...原创 2018-08-16 18:35:49 · 119 阅读 · 0 评论 -
206. Reverse Linked List
原题题目描述:反转链表(没有头结点)思路:总共需要三个指针变量,一个指针指向当前结点,一个指向其前驱结点,一个指向后继结点,遍历链表,把当前结点的指针域指向前驱结点,然后三个指针向后走,遍历结束后,返回指向前驱结点的指针即可/** * Definition for singly-linked list. * public class ListNode { * int v...原创 2018-08-16 17:56:14 · 275 阅读 · 0 评论 -
237. Delete Node in a Linked List
原题题目描述:编写一个函数来删除单链表中的节点(尾部除外),只允许访问该节点。思路:由于只给了要删结点,没法获取其前驱结点,所以我们采用的策略是复制后继结点的数据域值到当前结点,然后删除后继结点即可/** * Definition for singly-linked list. * struct ListNode { * int val; * struct...原创 2018-08-16 16:52:05 · 108 阅读 · 0 评论 -
725. Split Linked List in Parts
原题题目描述:给你一个链表,安给定的要求分成几段,每段之间长度不相差1,且前面的链表的长度大于等于后面的链表长思路: 先遍历求出链表长再用长度和份数求商得到每段的基本长,求余得到剩下的长度,剩下的长度则遍历时自减分配给前面的链表,当分配完后,后面的链表长度就为基本长用一个指针从头遍历整个链表不停歇,另一个指针根据算出的链表长,在链表中走相对应的长度的步数,走完一个置next域为空....原创 2018-08-18 20:13:51 · 135 阅读 · 0 评论 -
817. Linked List Components
原题题目描述:给出 head了包含唯一整数值的链表的头节点 .我们还给出了列表G,链表中的值的子集。返回连接组件的数量,G如果它们在链表中连续出现,则连接两个值。思路 我们可以先建立一个哈希表,存放G数组,然后遍历链表,当当前结点在表中出现,且它的下一个结点值不在表中出现或下一个结点为空时,让计数器自增,其他情况就让遍历指针往后走哈希表的具体实现可以用Set集合,也可以用一个bool...原创 2018-08-18 15:26:32 · 167 阅读 · 0 评论 -
707. Design Linked List
原题题目描述: 设计链表思路:可以自己创建链表,也可以用arryList模拟用arrayList模拟class MyLinkedList { List<Integer> list; /** Initialize your data structure here. */ public MyLinkedList() { list ...原创 2018-08-18 14:09:15 · 295 阅读 · 0 评论 -
109. Convert Sorted List to Binary Search Tree
原题题目描述: 把一个升序链表构建成左右子树深度相差不过1的平衡树思路:构建树一般而言用递归生成 先定义两个快慢指针,一路往前走,当快指针到达尾结点或者尾结点的前驱结点时循环结束.创建树节点,结点数据域为此时慢指针指向的结点的元素值,并由此递归其构建左子树,而其左子树的数据域均取自头结点到慢指针这段(原链表的前半段)其右子树的数据域均取自慢结点后继结点到空结点这段(原链表的后半段)...原创 2018-08-21 19:47:42 · 217 阅读 · 0 评论