精華區beta Marginalman 關於我們 聯絡資訊
61. Rotate List 有一個link list,請把這個link list向右轉k次 回傳旋傳後的link list 思路: 先計算這個link list有幾個node,假設有n個 向右旋轉k次代表倒數第(k%n)個node會變成head 如果k%n==0,那旋轉後的link list會跟原本的一樣 記得要把倒數第(k%n)+1個node的下一個節點設成NULL c code : /** * Definition for singly-linked list. * struct ListNode { * int val; * struct ListNode *next; * }; */ struct ListNode* rotateRight(struct ListNode* head, int k) { if (!head){ return head; } int cnt=1,n=0; struct ListNode* temp=head; while (temp->next){ temp=temp->next; cnt++; } n=k%cnt; if (n==0){ return head; } temp->next=head; temp=head; //倒數第n個node是rotate後的第一個 //所以要把倒數第n+1 node.Next=nil for (int i=0;i<cnt-n-1;i++){ temp=temp->next; } head=temp->next; temp->next=NULL; return head; } -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 42.73.222.134 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/Marginalman/M.1709807971.A.D99.html
DJYOSHITAKA: 大師 03/07 18:40