leetCode练习(61)
来源:互联网 发布:网络真人赌博骗局 编辑:程序博客网 时间:2024/05/16 15:45
题目:Rotate List
难度:medium
问题描述:
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
.
Subscribe to see which companies asked this question
解题思路:
先找到len,然后tail与head相连,再在正确的地方断开。难点在于怎么找到断开的地方。一是从tail再次走len-k%len步,而是在最开始的找到tail时,就将整个链表用ArrayList存起来,再直接提出断点。第二个办法是明显的空间换时间~
方法一代码如下:
public class ListNode{int val;ListNode next;ListNode(int x){val=x;}}public ListNode rotateRight(ListNode head, int k) {if(head==null){return head;} ListNode temp=head; int len=1; while(temp.next!=null){ temp=temp.next; len++; } temp.next=head; k=k%len; for(int i=0;i<len-k-1;i++){ head=head.next; } temp=head; head=head.next; temp.next=null; return head; }
方法二代码如下:
public ListNode rotateRight3(ListNode head, int k) {if(head==null){return head;}ListNode tail=head;int len=1;ArrayList<ListNode> list=new ArrayList<>();while(tail.next!=null){list.add(tail);tail=tail.next;len++;}list.add(tail);tail.next=head;k=k%len;k=len-k-1;System.out.println("k="+k);tail=list.get(k);head=tail.next;tail.next=null;return head;}
0 0
- leetCode练习(61)
- leetCode练习(7)
- leetCode练习(9)
- leetCode练习(2)
- leetCode练习(14)
- leetCode练习(3)
- leetCode练习(4)
- leetCode练习(19)
- leetCode练习(18)
- leetCode练习(5)
- leetCode练习(15)
- leetCode练习(20)
- leetCode练习(21)
- leetCode练习(16)
- leetCode练习(17)
- leetCode练习(11)
- leetCode练习(24)
- leetCode练习(22)
- Could not find com.android.databinding:library:1.2.1. Required by: XXXXX:app:unspecified
- 阻止输入框中输入数据后回车自动刷新页面
- 反射减少servlet数量
- Java中的自动类型转换
- WPF部署(一):WebService配置文件及编译时拷贝
- leetCode练习(61)
- 在Gazebo中使用DEM構建起伏地形環境
- SELECT INTO 和 INSERT INTO SELECT 两种表复制语句的不同
- 如何创建无标题DialogFragment?
- iOS UILabel高度自适应终结篇
- 卷积神经网络(CNN)在句子建模上的应用
- 图片验证码系统设计
- Spring Security学习笔记之SessionManagementFilter
- 【gulp】Refusing to install xxx as a dependency of itself