找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1192|回复: 0
收起左侧

[米群网刷题小分队] 【LeetCode小分队】【Rotate List】【刷题第一弹2014】

[复制链接]

11

主题

8

精华

253

积分

高级会员

Rank: 3Rank: 3

积分
253
发表于 10-12-2014 01:08 PM | 显示全部楼层 |阅读模式

亲!马上注册或者登录会查看更多内容!

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
leetcode通道:
http://oj.leetcode.com/problems/rotate-list/
题目:

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.

思路 : 首先计list长度len,由于存在k > len的输入 因此进行 k%len 操作,取倒数第k个node,rotatelist

代码 :
  1. public ListNode rotateRight(ListNode head, int n) {
  2.         if (head == null || n == 0) return head;
  3.         int len = 0;
  4.         ListNode p = head;
  5.         while (p != null) {
  6.             p = p.next;
  7.             len++;
  8.         }
  9.         n = n % len;
  10.         if (n == 0) return head;
  11.         ListNode tail = head;
  12.         for (int i = 0; i < n; i++) {
  13.             tail = tail.next;
  14.         }
  15.         p = head;
  16.         while (tail.next != null) {
  17.             p = p.next;
  18.             tail = tail.next;
  19.         }
  20.         tail.next = head;
  21.         head = p.next;
  22.         p.next = null;
  23.         return head;
  24.         
  25.     }
复制代码



建议的回复格式:
思路:(必填)
代码:(必填)
复杂度分析:(必填)
细节和陷阱:(选填)
相似题目: (选填)

本帖被以下淘专辑推荐:

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表