【第22期】观点:IT 行业加班,到底有没有价值?

[leetcode] 【链表】 61. Rotate List

原创 2016年06月01日 16:06:47

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个节点翻转到链表头,比如1->2->3->4->5->NULL and k = 2,
4->5反转到了开头得到4->5->1->2->3->NULL.

题解

先遍历一遍算出长度len,然后k的值有可能大于len,所以k=k%len;
然后把链表头尾相连,走len-k步,断开,即为要求的链表。
代码:
/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     ListNode *next;
 *     ListNode(int x) : val(x), next(NULL) {}
 * };
 */
class Solution {
public:
    ListNode* rotateRight(ListNode* head, int k) {
        if(head==NULL||k==0) return head;
        ListNode *p=head;
        int len=0;
        while(p!=NULL)
        {
            len++;
            if(p->next==NULL)
                break;
            else p=p->next;
        }
        k=k%len;
        p->next=head;
        for(int i=0;i<len-k;i++)
            p=p->next;
        head=p->next;
        p->next=NULL;
        return head;
        
    }
};



版权声明:本文为博主原创文章,未经博主允许不得转载。 举报

相关文章推荐

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

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

[LeetCode]61.Rotate List

【题目】 Given a list, rotate the list to the right bykplac

Leetcode 61. Rotate List (旋转链表)

LeetCode 61.Rotate List

[leetcode]Linked List Cycle II-找链表环起始点(修正版)java

很多网上的算法指根据结论倒推出a=c这样的结论,是错误的! 这道题比较注重数学推到,  如图,设置快慢两个指针,快指针的速

【Leetcode】61. Rotate List - 循环链表

思路: 1. 遍历链表找到结尾,顺便统计链表长度count 2. 将结尾指向head,使链表首位相连,并计算前行长度count=count-k%count 3. 前行count步,当前指针为尾,...
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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