Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OpenDocCN
awesome-algorithm
提交
fa01867b
A
awesome-algorithm
项目概览
OpenDocCN
/
awesome-algorithm
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
A
awesome-algorithm
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
未验证
提交
fa01867b
编写于
3月 10, 2019
作者:
K
Keqi Huang
提交者:
GitHub
3月 10, 2019
浏览文件
操作
浏览文件
下载
差异文件
Merge pull request #247 from xshahq/master
第61题
上级
ad955909
4a31b9f1
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
113 addition
and
0 deletion
+113
-0
docs/Leetcode_Solutions/C++/0061._Rotate_List.md
docs/Leetcode_Solutions/C++/0061._Rotate_List.md
+113
-0
未找到文件。
docs/Leetcode_Solutions/C++/0061._Rotate_List.md
0 → 100644
浏览文件 @
fa01867b
# 61. Rotate List
**<font color=red>难度:Medium<font>**
## 刷题内容
> 原题连接
*
https://leetcode.com/problems/rotate-list/
> 内容描述
```
Given a linked list, rotate the list to the right by k places, where k is non-negative.
Example 1:
Input: 1->2->3->4->5->NULL, k = 2
Output: 4->5->1->2->3->NULL
Explanation:
rotate 1 steps to the right: 5->1->2->3->4->NULL
rotate 2 steps to the right: 4->5->1->2->3->NULL
Example 2:
Input: 0->1->2->NULL, k = 4
Output: 2->0->1->NULL
Explanation:
rotate 1 steps to the right: 2->0->1->NULL
rotate 2 steps to the right: 1->2->0->NULL
rotate 3 steps to the right: 0->1->2->NULL
rotate 4 steps to the right: 2->0->1->NULL
```
> 思路1
******- 时间复杂度: O(n)******
- 空间复杂度: O(n)
****
**
这里的n是指链表的长度,我们用k对n的长度取余,因为k大于链表的长度之后就是一个循环。不需要重复操作。
```
cpp
/**
* 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
)
{
int
len
=
0
;
ListNode
*
h
=
head
;
ListNode
*
pre
;
while
(
h
)
{
++
len
;
pre
=
h
;
h
=
h
->
next
;
}
if
(
!
len
)
return
head
;
int
count1
=
len
-
k
%
len
;
if
(
count1
==
len
)
return
head
;
h
=
head
;
ListNode
*
tail
;
while
(
count1
)
{
tail
=
h
;
h
=
h
->
next
;
--
count1
;
}
pre
->
next
=
head
;
tail
->
next
=
nullptr
;
return
h
;
}
};
```
\ No newline at end of file
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录