Re: [閒聊] 每日leetcode已回收

看板Marginalman作者 (franchouchouISBEST)時間1年前 (2024/05/07 21:16), 1年前編輯推噓3(305)
留言8則, 4人參與, 1年前最新討論串198/1548 (看更多)
後來想想才知道可以像你板大神這樣inplace 一開始是想說會不會有從最右進位到最左的case 所以就直接用stack先存 但它是*2吼 而且carry最多是1 不管怎麼樣carry都不會傳超過一個digit 剩我浪費記憶體了 ListNode* doubleIt(ListNode* head) { stack<ListNode*> s; while(head) { s.push(head); head = head->next; } int carry = 0; ListNode* pre = NULL; while(!s.empty()) { ListNode* cur = s.top(); s.pop(); if(cur->val*2 + carry >= 10) { cur->val = cur->val*2 + carry - 10; carry = 1; } else { cur->val = cur->val*2 + carry; carry = 0; } cur->next = pre; pre = cur; } ListNode *dummy = new ListNode(1); dummy->next = pre; return carry == 1 ? dummy : dummy->next; } -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 114.137.31.27 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/Marginalman/M.1715087810.A.290.html ※ 編輯: DJYOSHITAKA (114.137.31.27 臺灣), 05/07/2024 21:17:56

05/07 21:19, 1年前 , 1F
別卷了
05/07 21:19, 1F

05/07 21:21, 1年前 , 2F
別卷了
05/07 21:21, 2F

05/07 21:39, 1年前 , 3F
從右到左都進位的例子不就例2ㄇ
05/07 21:39, 3F

05/07 22:00, 1年前 , 4F
應該說 要不要carry只要看next就好 不用看到next->ne
05/07 22:00, 4F

05/07 22:01, 1年前 , 5F
xt,因為最大digit9*2=18 carry最大=1所以19
05/07 22:01, 5F

05/07 22:01, 1年前 , 6F
然後4*2=8 8+1=9 5*2=10 10+1=11 整理出來其實單看
05/07 22:01, 6F

05/07 22:02, 1年前 , 7F
next->val*2有沒有進位即可 不用考慮後面的事情
05/07 22:02, 7F

05/07 22:02, 1年前 , 8F
想表達這個 好難講== 你們直覺想到對的比較猛
05/07 22:02, 8F
文章代碼(AID): #1cEYd2AG (Marginalman)
討論串 (同標題文章)
文章代碼(AID): #1cEYd2AG (Marginalman)