LeetCode----- 61. Rotate List

来源:互联网 发布:淘宝导航所有分类代码 编辑:程序博客网 时间:2024/06/15 21:35

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为非负数。

解题思路:先判断链表结点个数,然后将单链表构成循环单链表,然后遍历旋转的次数,寻找到头结点。

public class RotateList {public static  ListNode rotateRight(ListNode head, int k) {if(head == null || head.next == null) {return head;}int length = 0;ListNode result = new ListNode(0);result.next = head;ListNode node = result;while(node.next!=null) {length++;node = node.next;}node.next = head;//构成循环链表for(int i=0;i<length-k%length;i++) {node = node.next;}result.next = node.next;node.next = null;return result.next;    }public static void main(String[] args) {ListNode l10 = new ListNode(1);ListNode l11 = new ListNode(2);ListNode l12 = new ListNode(3);ListNode l13 = new ListNode(4);ListNode l14 = new ListNode(5);ListNode l15 = new ListNode(6);l10.next = l11;l11.next = l12;l12.next = l13;l13.next = l14;l14.next = l15;l15.next = null;ListNode node =rotateRight(l10,7);while(node != null) {if(node.next == null) {System.out.println(node.val);}else{System.out.print(node.val +"->");}node = node.next;}}}




原创粉丝点击