力扣原題:
/**
* definition for singly-linked list.
* public class listnode
* }*/class solution
// 計算鍊錶長度
int length = 0;
listnode cur = head;
while (null != cur)
// 模擬k輪鍊錶旋轉
for (int i = 0; i < (k % length); i++)
if (last != tmp)
}return head;
}}
空間複雜度:o(1)
/**
* definition for singly-linked list.
* public class listnode
* }*/class solution
// 計算鍊錶長度
int length = 0;
listnode cur = head;
while (null != cur)
// 計算偏移量
int step = length - (k % length);
if (step == length || step <= 0)
// 確認分割點
cur = head;
for (int i = 0; i < step - 1; i++)
// 斷鏈
listnode first = cur.next;
cur.next = null;
// 找到第二段鍊錶的末尾元素
cur = first;
while (null != cur && null != cur.next)
// 重新組鏈
cur.next = head;
head = first;
return head;
}}
/**
* definition for singly-linked list.
* public class listnode
* }*/class solution
// 鍊錶成環,並計算其長度
int length = 0;
listnode cur = head;
while (null != cur && null != cur.next)
cur.next = head;
length++;
// 計算步長
int step = length - (k % length) - 1;
// 定位分割點
cur = head;
for (int i = 0; i < step; i++)
// 斷鏈
listnode first = cur.next;
cur.next = null;
return first;
}}
(鍊錶)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 示例 2 輸入 0 1 2 ...
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 示例 2 輸入 0 1 2 ...
LeetCode 鍊錶(旋轉鍊錶61)
給定乙個鍊錶,旋轉鍊錶,將鍊錶每個節點向右移動 k 個位置,其中 k 是非負數。構造乙個環,對鍊錶進行處理。實現原理 先遍歷一遍,得出鍊錶長度,注意k可能大於len,之後令k len,將尾節點next指標指向 首節點,形成乙個環,接著往後跑len k步,從這裡斷開,就是要求的結果了。public l...