您的位置:首页 > 其它

LeetCode:Rotate List

2013-08-31 15:02 330 查看
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
.

基本编程题

package leetcode;

import java.io.IOException;

public class RotateList {
	public static void main(String[] args) throws IOException {
		ListNode h = new ListNode(1);
		h.next = new ListNode(2);
		
		RotateList l = new RotateList();
		ListNode head = l.rotateRight(h, 4);
		
		while (head != null) {
			System.out.println(head.val);
			head = head.next;
		}
	}

	public ListNode rotateRight(ListNode head, int n) {
		if (head == null || head.next == null) {
			return head;
		}

		ListNode node = head;
		int count = 0;
		ListNode newHead = null;
		ListNode last = null;

		while (node != null) {
			count++;

			node = node.next;
		}

		node = head;
		n = n % count;
		if (n == 0) {
			return head;
		}
		int newHeadIndex = count - n + 1;
		int index = 1;
		while (node != null) {
			if (index == newHeadIndex) {
				newHead = node;
			}
			
			if (node.next == null) {
				last = node;
			}

			ListNode next = node.next;
			if (index == newHeadIndex - 1) {
				node.next = null;
			}
			node = next;
			index++;
		}

		last.next = head;

		return newHead;
	}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: