演算法 旋轉單向鍊錶

2021-10-06 11:37:15 字數 665 閱讀 7998

給定乙個鍊錶,旋轉鍊錶,將鍊錶每個節點向右移動 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```

這道題很簡單。首先讓鍊錶變成環,然後看哪個是頭節點,把上個節點的next指標變成null,返回該頭節點即可。怎麼找到頭節點呢?用鍊錶的長度-用k取鍊錶長度模,就是頭節點了。

fun

rotateright

(head: listnode?

, k: int)

: listnode?

num++

previous?

.next = current

val step = num-k%num

for(i in

1..step)

previous?

.next =

null

return current

}

時間複雜度

遍歷一次鍊錶

空件複雜度

常量空間

演算法 反轉單向鍊錶

廢話少說,直接上 單向鍊錶模型,如下 public class listnode override public string tostring sb.return sb.tostring 方法一 遍歷元素,依此反轉位置private static listnode reversenode1 lis...

演算法訓練 旋轉鍊錶

給定乙個鍊錶,旋轉鍊錶,將鍊錶每個節點向右移動 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 nul...

單向鍊錶的演算法實現

include include using namespace std 定義乙個鍊錶 typedef struct linknode linklist,linknode 1.表示首節點 2.表示節點 初始化鍊錶 bool initlist linklist list list next null r...