旋转链表 您所在的位置:网站首页 链表右移 旋转链表

旋转链表

2024-07-16 08:32| 来源: 网络整理| 查看: 265

给定一个链表,旋转链表,将链表每个节点向右移动 k 个位置,其中 k 是非负数。在这里插入图片描述 思路: 首先链成环,找到作为头节点新节点,然后拆环

1、链表长度为n,将它设置成为一个环形链表,则节点移动n次后回到原来位子。k >=n 时候可以用 k = k%n 来判断需要移动的位子。 2、k 值 对应是 倒数第k个节点作为新得头节点。 (示例1,k = 2,则倒数第2个节点 4 作为新的头节点)。这个4节点的位子 为 n - k +1 3、将环形链表拆开,需要将新头节点前面的节点的next置空( 4是头节点 则3.next = null) 4、输出新头节点

/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode(int x) { val = x; } * } */ class Solution { public ListNode rotateRight(ListNode head, int k) { if(head == null || head.next == null || k == 0) return head; ListNode node = head; int n = 1; while(node.next != null) { node = node.next; n ++; } ListNode tail = node; //记录尾节点 node = head; ListNode prenode = head; if(k >= n){ k = k % n; } if(k == 0 ) return head; int index = n - k + 1; //找到index 处的节点 ,让他成为头节点 for(int i = 1; i


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有