怎样做艾条艾柱网站,wordpress cms 模板,中国建筑集团有限公司官网招聘,广州 骏域网站建设24.两两交换链表中的节点 给定一个链表#xff0c;两两交换其中相邻的节点#xff0c;并返回交换后的链表。你不能只是单纯的改变节点内部的值#xff0c;而是需要实际的进行节点交换。 解题思路
很麻烦的一道题目#xff0c;不是很理解。还是看视频文章才AC的。
解法1
…24.两两交换链表中的节点 给定一个链表两两交换其中相邻的节点并返回交换后的链表。你不能只是单纯的改变节点内部的值而是需要实际的进行节点交换。 解题思路
很麻烦的一道题目不是很理解。还是看视频文章才AC的。
解法1
public ListNode swapPairs(ListNode head) {ListNode dummy new ListNode(-1);dummy.next head;ListNode cur dummy;ListNode tmp;ListNode firstNode;ListNode secondNode;while (cur.next ! null cur.next.next ! null) {tmp cur.next.next.next;firstNode cur.next;secondNode cur.next.next;secondNode.next firstNode;firstNode.next tmp;cur firstNode;}return dummy.next;}19.删除链表的倒数第N个节点 给你一个链表删除链表的倒数第 n 个结点并且返回链表的头结点。 解题思路
很简单因为之前刷过类似的题目所以第一次就AC了。
解法1
public ListNode removeNthFromEnd(ListNode head, int n) {ListNode dummy new ListNode(-1);dummy.next head;ListNode fast dummy;ListNode slow dummy;for (int i 0; i n; i) {fast fast.next;}while (fast ! null) {fast fast.next;slow slow.next;}if (slow.next ! null) {slow.next slow.next.next;}return dummy.next;}面试题 02.07. 链表相交 给你两个单链表的头节点 headA 和 headB 请你找出并返回两个单链表相交的起始节点。如果两个链表没有交点返回 null 。 解题思路
我之前自己写的时候就是卡尔的第二种思想。我觉得第一种太复杂了还是掌握第二个算法就好。
解法1
public ListNode getIntersectionNode(ListNode headA, ListNode headB) {ListNode p1 headA;ListNode p2 headB;while (p1 ! p2) {if (p1 null) {p1 headB;} else {p1 p1.next;}if (p2 null) {p2 headA;} else {p2 p2.next;}}return p1;}
142.环形链表II 给定一个链表返回链表开始入环的第一个节点。 如果链表无环则返回 null。 解题思路
很经典的一道题目因为练得很多次因此没啥难度。
解法1
public ListNode detectCycle(ListNode head) {ListNode slow head;ListNode fast head;while (fast ! null fast.next ! null) {slow slow.next;fast fast.next.next;if (slow fast) {ListNode index1 fast;ListNode index2 head;while (index1 ! index2) {index1 index1.next;index2 index2.next;}return index1;}}return null;}