题解 | #调整牛群顺序#
调整牛群顺序
https://www.nowcoder.com/practice/a1f432134c31416b8b2957e66961b7d4
知识点:链表 遍历 拼接
思路:首先题目错了,这里是倒数n个;思路很简单找到这个节点,然后放到最后就行了,入门级
但是这里有一个效率的问题:拿到n的时候,我们并不知道链表多长,总不能遍历完全,这种时候多是牺牲空间换取时间
我们用两个指针遍历即可,指针p1又移n,p2不动,当p1到尾部的时候,p2则指向倒数n个
编程语言:java
如果我的思路启发了你,给个小小关注吧~
我是废江,一个从java跑到内核再准备润回java的打工人,我会持续分享从linux内核到上层java微服务等干货
import java.util.*; /* * public class ListNode { * int val; * ListNode next = null; * public ListNode(int val) { * this.val = val; * } * } */ public class Solution { /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param head ListNode类 * @param n int整型 * @return ListNode类 */ public ListNode moveNthToEnd (ListNode head, int n) { ListNode cur = head; ListNode pre = head; ListNode ppre = null; if(n==1) return head; for(int i=1;i<n;i++){ cur = cur.next; } while (cur.next != null){ cur = cur.next; ppre = pre;//存储pre上一个节点 pre = pre.next; } if(ppre != null) ppre.next = pre.next; else head = pre.next; cur.next = pre; pre.next = null; return head; } }