博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【LeetCode】61. Rotate List
阅读量:4604 次
发布时间:2019-06-09

本文共 1121 字,大约阅读时间需要 3 分钟。

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.

 

思路如下:将链表首尾相连成环。寻找尾节点的同时可以计算链表长度。

记链表长度为n,则实际移位次数为k=k%n。记len=n-k。

也就是说链表的后k个节点成为新链表的前半部分,链表的前len个节点为新链表的后半部分。

因此head往右第len的节点为新链表的尾,第len+1为新链表的头

两端相连即可,尾部下一个设为NULL即可。

/** * 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)            return head;                    ListNode* tail = head;        int n = 1;        while(tail->next != NULL)        {            n ++;            tail = tail->next;        }        k %= n;        if(k == 0)            return head;                    int len = n-k;        ListNode* cur = head;        while(--len)        {            cur = cur->next;        }        ListNode* post = cur->next;        cur->next = NULL;        tail->next = head;        return post;    }};

转载于:https://www.cnblogs.com/ganganloveu/p/4155421.html

你可能感兴趣的文章
2、JDBC-CURD
查看>>
【C语言零碎知识点】变量的存储类型
查看>>
编程时 对 用途这个字段定义时 不要用using 这个英文
查看>>
Java中IO对象的输入输出流
查看>>
JQ实现accordion(可折叠)效果
查看>>
javascript方式实现无缝滚动(两种方式)
查看>>
Sumsets(数学)
查看>>
sgu 181 X-Sequence
查看>>
servlet的编码原理
查看>>
ARM4412的MMU内存管理单元
查看>>
ubuntu MySQL安装和设置
查看>>
HTML5可以存的东西有哪些:
查看>>
bzoj1816: [Cqoi2010]扑克牌
查看>>
bzoj3562: [SHOI2014]神奇化合物
查看>>
bzoj2306: [Ctsc2011]幸福路径
查看>>
python相关遗漏知识点补充
查看>>
ReactJS实用技巧(2):从新人大坑——表单组件来看State
查看>>
无法删除数据库“XXX”,因为该数据库当前正在使用
查看>>
git flow 基本操作
查看>>
cf161d 求距离为k的点对(点分治,树形dp)
查看>>