博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
leetcode:Rotate List
阅读量:6715 次
发布时间:2019-06-25

本文共 1122 字,大约阅读时间需要 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.

分析:题意为将一个链表向右旋转k位。

思路:此题同样可以利用双指针,第一个指针从头开始向后移动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 *temp = head;  int count = 0;  while(temp != NULL)  {    count++;    temp = temp->next;  }    if(k > count)     k = k%count;  if(k == count || k == 0)     return head;    ListNode *first = head;  while(k > 0)  {    first = first->next;    k--;  }    ListNode *second = head;  while(first->next != NULL)  {    first = first->next;    second = second->next;  }  ListNode *newhead = second->next;  first->next = head;  second->next = NULL;  return newhead;}};

  

转载于:https://www.cnblogs.com/carsonzhu/p/5202082.html

你可能感兴趣的文章
获取图形验证码
查看>>
值得 .NET 开发者了解的15个特性
查看>>
Fresco-Facebook的图片加载框架的使用
查看>>
Android Runtime Stats
查看>>
InstallShield卸载状态
查看>>
CentOS7 修改主机名
查看>>
小工具:天气查询 Vs自定义设置 DevGridControl中GridView排序问题 小工具:火车票查询 小工具:邮件发送 小工具:截图&简单图像处理...
查看>>
11.QT-布局管理器(Box,Grid,Form,Stacked)
查看>>
用 Anaconda 完美解决 Python2 和 python3 共存问题
查看>>
易语言飞扬学习
查看>>
Android 自定义Android ORM 框架greenDAO数据库文件的路径
查看>>
python程序打包成.exe
查看>>
oc懒加载 & swift lazy
查看>>
CUDA 编程的基本模式
查看>>
git命令行解决冲突文件步骤
查看>>
List、Map、Set三个接口,存取元素时,各有什么特点?
查看>>
js进阶 12-6 监听鼠标滚动事件和窗口改变事件怎么写
查看>>
HttpClient的基本使用
查看>>
Tomcat 7服务器线程模型
查看>>
idea设置断点,对于for循环,到指定次数时停止
查看>>