LeetCode Rotate List

来源:互联网 发布:老公寄存处 知乎 编辑:程序博客网 时间:2024/04/29 20:32

题目:

Given a list, rotate the list to the right by k places, where k is non-negative.

For example:
Given 1->2->3->4->5->NULL and k = 2,
return 4->5->1->2->3->NULL.

题意:

就是给定一个k,表示从右边开始走,然后将右边的k各节点重新放到头结点这里,但是注意这个k是可以循环的,所以k首先得对单链表的长度取模。其他题目的解答在代码里。

public static ListNode rotateRight(ListNode head,int k){if(head == null || head.next == null)return head;ListNode slow = head;ListNode fast = head;ListNode preNode = new ListNode(-1);preNode.next = head;int length = 0;ListNode curr = head;while(curr != null){    length++;    curr = curr.next;}k = k % length;if(k == 0)    return head;while(k-- > 1 && fast != null){fast = fast.next;}ListNode pre = new ListNode(-1);pre.next = slow;while(fast.next != null){pre = slow;slow = slow.next;fast = fast.next;    pre.next = slow;}    fast.next = preNode.next;    preNode.next = slow;    pre.next = null;    return preNode.next;}


0 0
原创粉丝点击