当前位置: 首页 > 后端技术 > Java

LeetCode-143-RearrangeLinkedList

时间:2023-04-01 23:47:52 Java

RearrangeLinkedList题目描述:给定一个单向链表L的头节点head,单向链表L表示为:L0→L1→...→Ln-1→Ln请重新排列更改为:L0→Ln→L1→Ln-1→L2→Ln-2→...不能简单地更改节点内部的值,而是要实际交换节点。例子见LeetCode官网。来源:LeetCode链接:https://leetcode-cn.com/probl...版权归LeetCode所有。商业转载请联系官方授权,非商业转载请注明出处。方案一:链表遍历首先,如果链表为空或者链表只有一个节点,直接返回。否则,先用一个节点栈记录所有节点,并记录链表节点数count;然后,记录插入的顺序,当遍历到奇数位置时,从头节点的方向插入链表;当遍历到偶数位置时,将其从栈中移除的节点(即从尾节点方向)插入到链表中。importcom.kaesar.leetcode.ListNode;importjava.util.Stack;publicclassLeetCode_143{publicstaticvoidreorderList(ListNodehead){if(head==null||head.next==null){返回;}//所有节点Stacknodes=newStack<>();//链表节点数intcount=0;ListNodecur=head;while(cur!=null){count++;节点.推(当前);cur=cur.next;}前=1,后=0,我=1;ListNodenewCur=head;cur=head.next;//分别从头节点和栈开始遍历链表节点,然后按照指定的顺序将新的头节点插入链表中while(front+back