博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[LeetCode] Rotate List 解题报告
阅读量:6639 次
发布时间:2019-06-25

本文共 955 字,大约阅读时间需要 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.
[解题思路]
首先从head开始跑,直到最后一个节点,这时可以得出链表长度len。然后将尾指针指向头指针,
将整个圈连起来,接着往前跑len – k%len,从这里断开,就是要求的结果了。
[Code]
1:    ListNode *rotateRight(ListNode *head, int k) {  2:      // Start typing your C/C++ solution below  3:      // DO NOT write int main() function  4:      if(head == NULL || k ==0) return head;  5:      int len =1;  6:      ListNode* p = head,*pre;  7:      while(p->next!=NULL)  8:      {  9:        p = p->next;  10:        len++;      11:      }  12:      k = len-k%len;  13:      p->next = head;  14:      int step =0;  15:      while(step< k)  16:      {  17:        p = p->next;  18:        step++;  19:      }  20:      head = p->next;  21:      p->next = NULL;  22:      return head;  23:    }
[Note]
注意K大于len的可能。

转载于:https://www.cnblogs.com/codingtmd/archive/2013/01/02/5078960.html

你可能感兴趣的文章
MetroIE如何关闭
查看>>
54:mysql修改密码|连接mysql|mysql常用命令
查看>>
【Nikki积累-网络】HTTP方法
查看>>
我的友情链接
查看>>
对前端ajax错误进行统一处理
查看>>
【spark 深入学习 06】RDD编程之旅基础篇02-Spaek shell
查看>>
Docker镜像与容器命令
查看>>
Java基础学习总结(20)——基础语法
查看>>
保存iptables的防火墙规则的方法如下:
查看>>
项目进度管理
查看>>
线程池的设计(一):半同步半异步线程池的设计
查看>>
Dubbo Zookeeper 整合
查看>>
CISCO2950恢复出厂设置
查看>>
Git
查看>>
Android官方命令深入分析之虚拟机
查看>>
Android开发学习——基础学习
查看>>
C#基础解析之 Ⅴ【封装】
查看>>
按键中断
查看>>
Xcode 插件管理工具 Alcatraz
查看>>
建立JNI层的本地对象,并与JAVA层交互方法
查看>>