博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Rotate List 【要优化】
阅读量:4954 次
发布时间:2019-06-12

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

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.

思路:任何问题都要先检查validation,special case  

注意:【这道题我的速度是18ms,还有要优化的地方。未解决?】

class Solution { public:    ListNode *rotateRight(ListNode *head, int k) {        //check validation        if(head==NULL || k==0) return head;        // special case : only one node        if(head->next==NULL) return head;        //compute length, becase we need to figure out :k, lenght, who is bigger?        int length=0;        ListNode *p=head;        while(p){            length++;            p=p->next;        }        //compute the offset        int offset=0;        if(k%length==0) return head;        else offset=k%length;                int movesteps=length-offset;                //rotate start        ListNode *phead=head;        while(--movesteps>0){            phead=phead->next;        }        p=phead;        phead=phead->next;        p->next=NULL;        p=phead;                while(p->next!=NULL) p=p->next;        p->next=head;                return phead;     }};

 

转载于:https://www.cnblogs.com/renrenbinbin/p/4384967.html

你可能感兴趣的文章
Jmeter发送某个request时而成功,时而失败(处理办法:失败的时候尝试重新发送这个HTTP request)...
查看>>
unity 数学公式
查看>>
Qt开发中的实用笔记二--中文转码问题和string转换问题:
查看>>
带进度条的上传(Asp.net+MVC+Uploadify)
查看>>
web语义化理解
查看>>
web 前端常用组件【01】Pagination 分页
查看>>
c#重起 普通路由器
查看>>
单链表的翻转,插入,删除,遍历操作
查看>>
手机号码和邮箱等联系地址,为什么不明文显示?
查看>>
一步一步学Linq to sql六:延迟执行(非原创)
查看>>
[Vue]vue-router的push和replace的区别
查看>>
Git Windows客户端保存用户名与密码
查看>>
树莓派3B+(二)
查看>>
android,解决ListView,GridView滑动冲突。
查看>>
常用dos命令
查看>>
python学习小结_190611
查看>>
near指针和far指针
查看>>
php Captcha 練習
查看>>
JAVA抓取一个HTML源代码
查看>>
实现搜索功能
查看>>