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