题解 | #调整牛群顺序#

调整牛群顺序

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;
    }
}

全部评论

相关推荐

头像
11-07 01:12
重庆大学 Java
精致的小松鼠人狠话不多:签哪了哥
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务