这篇文章主要讲解了“两两交换链表中的节点示例”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“两两交换链表中的节点示例”吧!
自己解题第一次 (超时了)
public ListNode swapPairs(ListNode head) {
ListNode curr = head;
while (curr != null) {
ListNode next = curr.next.next;
if (next != null) {
ListNode temp = curr;
curr = next;
curr.next.next = temp;
}
}
return curr;
}
自己第二次解题(超时 错误)
public ListNode swapPairs(ListNode head) {
ListNode curr = head;
ListNode pre = head.next;
while (curr != null && pre != null) {
ListNode a = curr;
ListNode b = curr.next;
// 修改当前节点的指针指向前一个节点
a.next = pre;
pre.next = b;
curr = b.next;
pre = b;
}
return pre;
}
读分析之后的答案
public ListNode swapPairs(ListNode head) { // 创建一个空节点 默认指向头指针 ListNode pre = new ListNode(0); pre.next = head; // temp指向第一个node ListNode temp = pre; while(temp.next != null && temp.next.next !=null){ // 要交换的元素 ListNode a = temp.next; // 要交换元素的下一个元素 ListNode b = temp.next.next; //temp指向b temp.next = b; // a指向b.next a.next = b.next; // b指向a b.next = a; // 将交换完的a节点 变成起始节点 temp = a; } // ???? 这个返回值还是不理解 先跳过 return pre.next; }
感谢各位的阅读,以上就是“两两交换链表中的节点示例”的内容了,经过本文的学习后,相信大家对两两交换链表中的节点示例这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是亿速云,小编将为大家推送更多相关知识点的文章,欢迎关注!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。