题解 | #调整牛群顺序#
调整牛群顺序
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;
}
}

