Leetocde : Rotate List
来源:互联网 发布:macbook air破解软件 编辑:程序博客网 时间:2024/06/06 10:51
题目连接:https://leetcode.com/problems/rotate-list/#/description
题目大意:
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.
解题思路:
类似的链表题目很多,有时间还是要整理一下,今天就是只是针对这个题给出解题思路。
- 首先对链表进行遍历,遍历的目的有两个,第一就是获得链表有多少个节点;第二就是获得链表的结尾节点(也就是null的前一个节点)。
- 然后进行链表的尾-首连接,也就是末尾节点的next指向head节点。
- 第一次遍历已知链表的总共节点数 total,那么total-k便是链表左半部分的节点数left;
- 从head开始找left个节点这样就找到了反转后新的尾节点,也就找到了新的head节点,则该问题解决。
注意 :可能存在total - k =0的情况,所以为了统一处理我把第一次遍历我把head指向了尾节点,这样如果是total-k==0的情况,正好把head往后移动一个节点。
下面给出代码:
public class Solution { public ListNode rotateRight(ListNode head, int k) { if(head==null) return head; int total =1; ListNode p=head,rear; while(p.next!=null){ total++; p=p.next; } p.next = head; head = p; if(k>total) k=k%total; int left = total-k; p = head; while(left>0){ left--; p=p.next; } rear = p; head = rear.next; rear.next=null; return head; }}
运行结果:
0 0
- Leetocde : Rotate List
- 1.1数组和链表:61. Rotate List(Leetocde)
- Rotate List
- Rotate List
- Rotate List
- Rotate List
- Rotate List
- Rotate List
- Rotate List
- Rotate List
- Rotate List
- Rotate List
- Rotate List
- rotate-list
- Rotate List
- Rotate List
- Rotate List
- Rotate List
- 关于app冷启动白屏
- matlab连接Navicat出现的账户或密码错误问题 重设密码
- MySQL:定义一个小型的数据库
- NOIP2016 day2T1 组合数问题
- 整数的划分—动态规划
- Leetocde : Rotate List
- C++继承关系
- kali linux安装软件包
- java中int和Integer的==比较和拆箱装箱
- HTTP Status 500
- #define is unsafe hdu3350
- 散列表的基本原理与实现
- AndroidStudio启动之后遇到的问题
- 参加阿里这类大公司的社招该如何准备?