leetCode 61.Rotate List (旋转链表) 解题思路和方法
2023-09-27 14:23:28 时间
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,
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.
思路:题目非常清晰。思路是先得到链表长度。再从头開始直到特定点,開始变换连接就可以。
代码例如以下:
/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode(int x) { val = x; } * } */ public class Solution { public ListNode rotateRight(ListNode head, int k) { if(k == 0 || head == null) return head; int len = 0; ListNode first = head;//头结点 ListNode last = null;//尾节点 while(head != null){ len++;//求长度 last = head;//最后一个节点 head = head.next;//循环条件 } k = k%len;//假设k>len,取余数 int n = 0; head = first;//标记到头结点 while(head!= null){ if(++n == (len - k))//推断是否到达位置 break; head = head.next; } //下面为交换位置 last.next = first; first = head.next; head.next = null; return first; } }/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode(int x) { val = x; } * } */ public class Solution { public ListNode rotateRight(ListNode head, int k) { if(k == 0 || head == null) return head; int len = 0; ListNode first = head;//头结点 ListNode last = null;//尾节点 while(head != null){ len++;//求长度 last = head;//最后一个节点 head = head.next;//循环条件 } k = k%len;//假设k>len,取余数 int n = 0; head = first;//标记到头结点 while(head!= null){ if(++n == (len - k))//推断是否到达位置 break; head = head.next; } //下面为交换位置 last.next = first; first = head.next; head.next = null; return first; } }
相关文章
- [LeetCode] 由 “中缀表达式 --> 后缀表达式" 所想
- leetCode 30.Substring with Concatenation of All Words (words中全部子串相连) 解题思路和方法
- LeetCode_数学归纳_中等_775.全局倒置与局部倒置
- LeetCode_回溯_中等_46.全排列
- leetcode 231. 2的幂
- leetcode 234: Palindrome Linked List
- ★ Linked List Cycle II -- LeetCode
- [Leetcode]Reverse Linked List II
- LeetCode——Rotate List
- leetcode先刷_Remove Duplicates from Sorted List II
- [LeetCode] 529. Minesweeper 扫雷
- [LeetCode] 61. Rotate List 旋转链表
- [LeetCode] 136. Single Number 单独数
- [LeetCode] 19. Remove Nth Node From End of List 移除链表倒数第N个节点
- [LeetCode] 142. Linked List Cycle II 链表中的环 II
- leetcode 150 逆波兰表达式