本文共 1244 字,大约阅读时间需要 4 分钟。
给定一个链表,旋转链表,将链表每个节点向右移动 k 个位置,其中 k 是非负数。
示例 1:
输入: 1->2->3->4->5->NULL, k = 2
输出: 4->5->1->2->3->NULL 解释: 向右旋转 1 步: 5->1->2->3->4->NULL 向右旋转 2 步: 4->5->1->2->3->NULL示例 2:
输入: 0->1->2->NULL, k = 4
输出: 2->0->1->NULL 解释: 向右旋转 1 步: 2->0->1->NULL 向右旋转 2 步: 1->2->0->NULL 向右旋转 3 步: 0->1->2->NULL 向右旋转 4 步: 2->0->1->NULL来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/rotate-list 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。/** * 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) return head; Dequeq = new LinkedList<>(); while(head!=null) { q.offer(head); head = head.next; } if(k>1) { k = k%q.size(); } while(k-->0) { q.offerFirst(q.pollLast()); } ListNode dummy = new ListNode(0); dummy.next = q.peekFirst(); head = dummy.next; while(q.isEmpty()==false) { head.next = q.pollFirst(); head = head.next; } head.next = null; return dummy.next; } }