題目描述:給乙個鍊錶的頭結點head,旋轉鍊錶,將鍊錶每個節點向右移動k個位置
示例1:
輸入:1->2->3->4->5->null, k=2
輸出:4->5->1->2->3->null
示例2:
輸入:1->2->3->null, k=5
輸出:2->3->1->null
解題思路:由於是右移,給的又是頭節點,所以得找出旋轉後的新鍊錶的尾節點tail,
tail->next即為新鍊錶的頭節點
解題過程:先遍歷整個鍊錶,得出鍊錶長度len。將原鍊錶的尾節點指向其頭節點,形成閉環。然後找出新鍊錶的尾節點,斷環,形成新鍊錶。
/** * definition for singly-linked list.
* struct listnode
* listnode(int x) : val(x), next(nullptr) {}
* listnode(int x, listnode *next) : val(x), next(next) {}
* }; */
class
solution
//將鍊錶首尾相接
int move_k=k%len;
if(move_k==0) return
head;
l->next=head;
//找出新鍊錶的尾節點
for(int i=0;i)
l=l->next;
//斷環 形成新鍊錶
listnode* newhead=l->next;
l->next=nullptr;
return
newhead;
}};
Leetcode每日一題 61 旋轉列表
給你乙個鍊錶的頭節點 head 旋轉鍊錶,將鍊錶每個節點向右移動 k 個位置。示例 1 輸入 head 1,2,3,4,5 k 2 輸出 4,5,1,2,3 示例 2 輸入 head 0,1,2 k 4 輸出 2,0,1 鍊錶中節點的數目在範圍 0,500 內 100 node.val 100 0 ...
每日一題 LeetCode
在陣列中的兩個數字,如果前面乙個數字大於後面的數字,則這兩個數字組成乙個逆序對。輸入乙個陣列,求出這個陣列中的逆序對的總數。示例 1 輸入 7,5,6,4 輸出 5 限制 0 陣列長度 50000 思想是 分治演算法 所有的 逆序對 於 3 個部分 左邊區間的逆序對 右邊區間的逆序對 橫跨兩個區間的...
LeetCode每日一題(題1028)
最近在刷leetcode每日一題,每次做完之後總能有些收穫,所以想著不如每天寫個部落格記錄一下做的題目的解法以及自己寫的時候問題出在 從先序遍歷還原二叉樹 題目大意 給出乙個字串 1 2 3 4 5 6 7 1代表節點的值,前面的 個數代表節點的深度。如果只有乙個子節點,保證這個節點為左子節點。返回...