博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【一天一道LeetCode】#61. Rotate List
阅读量:4197 次
发布时间:2019-05-26

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

一天一道LeetCode系列

(一)题目

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.

(二)解题

本题的思路:

1、找到倒数第K个节点
2、将k以后的节点移动到前面来,与头结点相连。
3、新的头结点就是倒数第k个节点。
需要注意一下几种特殊情况:
1、链表为空或者链表只有一个节点
2、k的值为0或者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(k==0||head == NULL || head->next==NULL) return head;        ListNode* pkth =  head;//记录倒数第k个节点        ListNode* pLast =  head;//记录最后一个节点        ListNode* ptemp =NULL;//倒数第K+1个节点        ListNode* p = head;        int length = 0;        while(p!=NULL)//求出链表的长度        {            p=p->next;            ++length;        }        k %=length;//保证k在0~length之间        if(k==0) return head;//k等于0直接返回head        while(pLast != NULL && --k) pLast = pLast->next;//找到正数第K个节点        while(pLast->next !=NULL){
//找到倒数第K个节点 ptemp = pkth;//这里用到两个指针,pLast和pkth同时移动,最后pkth就是倒数第K个节点 pkth = pkth->next; pLast = pLast->next; } ptemp->next = NULL; pLast->next = head;//调整链表 return pkth; }};

转载地址:http://zoyli.baihongyu.com/

你可能感兴趣的文章
腾讯物联网操作系统TencentOS tiny线上移植大赛,王者机器人、QQ公仔、定制开发板等礼品等你来拿 !
查看>>
为云而生,腾讯云服务器操作系统TencentOS内核正式开源
查看>>
腾讯汤道生:开源已成为许多技术驱动型产业重要的创新推动力
查看>>
微信小程序多端框架 kbone 开源
查看>>
视频质量评估算法 DVQA 正式开源
查看>>
腾讯优图开源视频动作检测算法DBG,打破两项世界纪录
查看>>
在中国提供了60亿次服务的疫情模块向世界开源 腾讯抗疫科技输出海外
查看>>
在中国提供了60亿次服务的疫情模块向世界开源
查看>>
世界卫生组织与腾讯加深合作 新冠肺炎AI自查助手全球开源
查看>>
Hibernate 中get, load 区别
查看>>
java反射详解
查看>>
JPA 注解
查看>>
JQuery 简介
查看>>
Java创建对象的方法
查看>>
Extjs自定义组件
查看>>
TreeGrid 异步加载节点
查看>>
Struts2 标签库讲解
查看>>
Google Web工具包 GWT
查看>>
材料与工程学科相关软件
查看>>
MPI的人怎么用仪器
查看>>