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

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

思路:

这个题目的陷阱中,输入为空指针大约不算其中之一。主要的问题是k可以大于这个链表的总长度。这样,真正的旋转次数是k % length(ListNode)。那么新的head就是length(ListNode) - k  + 1的结点。

题解:

 

/** * 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 == nullptr)            return nullptr;                // first update the length of the list        ListNode* len_iter = head;        int len = 1;        while(len_iter->next != nullptr)            ++len, len_iter = len_iter->next;        k = k % len;                if (k == 0)            return head;                    len_iter->next = head;  // make it a circled link list        ListNode* breakpoint = head;        for(int i = 0; i < len - k - 1; ++i)            breakpoint = breakpoint->next;                head = breakpoint->next;        breakpoint->next = nullptr;                return head;    }};

 

 

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

你可能感兴趣的文章
程序员的七大坏毛病
查看>>
MyBabis 用法详解
查看>>
leetcode-104
查看>>
C++ STL编程轻松入门【转载】
查看>>
Linux中的进程调度(五)
查看>>
.Net操作Excel —— NPOI
查看>>
黑马程序员--Java基础加强(高新技术)学习第三天
查看>>
RedHat Enterprise Linux 6.4使用Centos 6 的yum源
查看>>
ios如何实现静音模式下声音仍然可以外放
查看>>
alibaba笔试1
查看>>
JAVA 中BIO,NIO,AIO的理解以及 同步 异步 阻塞 非阻塞
查看>>
数据的索引
查看>>
Python之面向对象函数式编程
查看>>
终于又博客了
查看>>
Android动态修改ToolBar的Menu菜单
查看>>
宣布发布长期保留 Azure Backup功能
查看>>
“融合”的力量
查看>>
POJ 1185 经典状压dp
查看>>
文件上传(图片语音等上传到微信服务器)
查看>>
常用笔记:MySQL
查看>>