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

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

标题:
通过率: 21.8%
难度: 中等

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%len(num)

num=[1,2,3,4,5],k=2

第一步,翻转

num=[5,4,3,2,1]

第二步找到k点,将k点之前的翻转一次。k点之后的翻转一次

num=[45,123]

本题是链表用翻转的就会变得麻烦,但是可以看出来翻转的链表仍然有局部有序

具体步骤如下:

第一个指针fisrt往下遍历k次。

第二个指针second从头开始,和first指针同时走,一直等到first走到最后一个节点。如下图

1  -   2  -    3   -  4  -       5

                 ⬆️                 ⬆️

               second          first

 

tmp指针只向second的下一个节点。

然后将fisrt指向链表的头部,second指空,那么翻转后的链表的头部就是tmp

具体代码如下:

1 # Definition for singly-linked list. 2 # class ListNode: 3 #     def __init__(self, x): 4 #         self.val = x 5 #         self.next = None 6  7 class Solution: 8     # @param head, a ListNode 9     # @param k, an integer10     # @return a ListNode11     def rotateRight(self, head, k):12         if k==0 or head==None or head.next==None or k==0:return head13         count,og_start=0,head14         while head!=None:15             head=head.next16             count+=117         first,second,k=og_start,og_start,k%count18         if k==0:return og_start19         for i in range(k):first=first.next20         while first.next!=None:21             first=first.next22             second=second.next23         tmp=second.next24         second.next=None25         first.next=og_start26         return tmp

 

转载于:https://www.cnblogs.com/pkuYang/p/4434263.html

你可能感兴趣的文章
Cannot lock storage /tmp/hadoop-root/dfs/name. The directory is already locked.
查看>>
BFS和DFS的java实现
查看>>
Struts2框架起源
查看>>
Chromosome coordinate systems: 0-based, 1-based
查看>>
Myeclipse10集成Flex4.6
查看>>
java电影站点开发经验3
查看>>
notepad++自动对齐使用空格代替Tab并将空格显示为小点
查看>>
开源APM系统skywalking介绍与使用
查看>>
rabbitmqctl 报错
查看>>
elasticsearch 安装ik中文分词
查看>>
解决OS睡眠功能中,移动鼠标就会唤醒
查看>>
深入理解VMware虚拟机网络通信原理
查看>>
SpringMVC中使用Interceptor拦截器
查看>>
摩斯密码加解密
查看>>
徒弟涨工资排行榜
查看>>
关于庖丁分词
查看>>
JavaScript 数组去重并统计重复元素出现的次数
查看>>
ZJOI2002昂贵的聘礼题解
查看>>
Java并发:多线程和java.util.concurrent并发包总结
查看>>
【msdn wpf forum翻译】获取当前窗口焦点所在的元素
查看>>