鍊錶 旋轉鍊錶

2021-10-05 22:45:50 字數 1579 閱讀 4964

力扣原題:

/**

* 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...