Middle-题目107:61. Rotate List

原创 2016年05月31日 19:58:17

题目原文:
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位。
题目分析:
先把链表连成环(尾节点连到head上),并统计节点个数count,然后从head开始把第count-k%count个节点拆下来就行了。
源码:(language:c)

/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     struct ListNode *next;
 * };
 */
struct ListNode* rotateRight(struct ListNode* head, int k) {
    if(!head || !head->next)
        return head;
    struct ListNode* end;
    int count=1;
    for(end = head; end->next; end = end->next)
        count++;
    end->next = head;
    struct ListNode *p1=head,*p2=head->next;
    for(int i=1;i<count-k%count;i++) {
        p1=p1->next;
        p2=p2->next;
    }
    p1->next = NULL;
    return p2;
}

成绩:
4ms,beats 6.02%,众数4ms,93.98%
cmershen的碎碎念:
本题有一个陷阱在于,如果直接从环上找第k个点是错误的,因为这里的k可能远大于链表长度,而对环来说移动一圈相当于没动,所以取余即可。

版权声明:完整版Leetcode题解请出门左转https://github.com/cmershen1/leetcode/tree/master/docs

相关文章推荐

leetcode_middle_61_48. Rotate Image

题意: 将一个n*n的二维矩阵顺时针旋转90度 分析: 数组的核心就在角标,我们要去研究这样的旋转到底是怎么旋转的? 举例子研究发现规律: 【i, j】  => 【j, n-1-i】   接...
  • pusude
  • pusude
  • 2017年02月23日 17:40
  • 127

leetCode61:Rotate List

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

leetcode解题61. Rotate List java版(旋转链表)

leetcode解题61. Rotate List java版(旋转链表)

(java)leetcode-61:Rotate List

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

Leetcode 61. Rotate List (Medium) (cpp)

Leetcode 61. Rotate List (Medium) (cpp)
  • Niko_Ke
  • Niko_Ke
  • 2016年08月15日 11:25
  • 173

[LeetCode]61.Rotate List

【题目】 Given a list, rotate the list to the right by k places, where k is non-negative. For example...

【LeetCode】61. Rotate List

【LeetCode】61. Rotate List 快慢指针的应用

Leetcode #61. Rotate List 循环位移链表 解题报告

1 解题思想题目的意思是如果有一个链表,现在让你循环向右位移K步,得到一个新的开头的链表,例子可以看原题的实例。首先有一个你要明白的是,向右移动的K步,可能会大于链表的长度N,于是乎你需要这么做:1、...
  • MebiuW
  • MebiuW
  • 2016年05月01日 23:32
  • 1176

61. Rotate List\80. Remove Duplicates from Sorted Array II\209. Minimum Size Subarray Sum

Rotate List 题目描述 代码实现 Remove Duplicates from Sorted Array II 题目描述 代码实现 Minimum Size Subarray Sum 题目描...

LeetCode 61. Rotate List(Python详解及实现)

【题目】 Given a list, rotate the list to the rightby k places, where k is non-negative.   For exampl...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Middle-题目107:61. Rotate List
举报原因:
原因补充:

(最多只允许输入30个字)