LeetCode 61. 旋转链表
生活随笔
收集整理的這篇文章主要介紹了
LeetCode 61. 旋转链表
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
給定一個鏈表,旋轉鏈表,將鏈表每個節點向右移動?k?個位置,其中?k?是非負數。
示例?1:
輸入: 1->2->3->4->5->NULL, k = 2 輸出: 4->5->1->2->3->NULL 解釋: 向右旋轉 1 步: 5->1->2->3->4->NULL 向右旋轉 2 步: 4->5->1->2->3->NULL來源:力扣(LeetCode) 鏈接:https://leetcode-cn.com/problems/rotate-list 著作權歸領扣網絡所有。商業轉載請聯系官方授權,非商業轉載請注明出處。示例?2:
輸入: 0->1->2->NULL, k = 4 輸出: 2->0->1->NULL 解釋: 向右旋轉 1 步: 2->0->1->NULL 向右旋轉 2 步: 1->2->0->NULL 向右旋轉 3 步: 0->1->2->NULL 向右旋轉 4 步: 2->0->1->NULL來源:力扣(LeetCode) 鏈接:https://leetcode-cn.com/problems/rotate-list 著作權歸領扣網絡所有。商業轉載請聯系官方授權,非商業轉載請注明出處。?
/*** Definition for singly-linked list.* public class ListNode {* int val;* ListNode next;* ListNode(int x) { val = x; }* }*/ class Solution {public ListNode rotateRight(ListNode head, int k) {// 如果為空,或者鏈表只有1個元素 或者k為0,不移動位置if(null == head || null == head.next || k == 0){return head;}int len = 1;ListNode end = head;// 遍歷鏈表,計算出鏈表的長度lenwhile(null != end.next){end = end.next;len++;}//System.out.println(len);k = k%len; // 移動的位置k對長度len取模ListNode p = head; for(int i=0; i<len - k - 1; i++){p = p.next; // 找到從哪個節點斷開}end.next = head;head = p.next; // 新的頭部p.next = null;return head;} }?
?
?
總結
以上是生活随笔為你收集整理的LeetCode 61. 旋转链表的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: c语言系列一
- 下一篇: centos 安装redis