iT邦幫忙

2026 iThome 鐵人賽

DAY 17
0
Software Development

30天刷完leetcoode75系列 第 17 篇

C++ 演算法練習 Day17|739, 136, 338 題解與思路分享

  • 分享至 

  • xImage
  •  

https://ithelp.ithome.com.tw/upload/images/20261001/20184265pv9YaeYrAy.png

題目解析: 給定一個陣列代表每天的溫度,要求找出每一天需要等幾天後才會出現更高的溫度,如果未來都沒有更高的溫度就補0
解題思路: 設一個全為0的陣列ans和一個堆疊v用來裝天數的索引。丟進迴圈跑每天的溫度,如果今天的溫度比堆疊最上面那天的溫度還高,就把最上面的天數拿出來,將兩者的天數差存進ans,重複這動作直到堆疊為空或遇到更高溫為止。最後把今天的天數索引塞進堆疊,跑完回傳ans

class Solution {
public:
    vector dailyTemperatures(vector& temperatures) {
        int n = temperatures.size();
        vector ans(n, 0);
        stack v;
        
        for (int i=0; i temperatures[v.top()]) {
                int j = v.top();
                v.pop();
                ans[j] = i - j;
            }
            v.push(i);
        }

        return ans;
    }
};

https://ithelp.ithome.com.tw/upload/images/20261001/201842653upx7SjeCh.png

題目解析: 給定一個陣列,裡面除了某個數字只出現過一次之外,其他所有數字都剛好出現兩次,要把那個落單的數字找出來
解題思路: 設一個集合v。丟進迴圈把陣列裡的數字一個一個抓出來看,如果這個數字已經在集合裡面了(代表第二次出現),就把它從集合裡刪除;如果沒出現過就加進去。這樣迴圈跑完後,集合裡面就只會剩下那個落單的數字,最後直接回傳集合裡的第一個元素

class Solution {
public:
    int singleNumber(vector& nums) {
        set v;
        for(auto it : nums){
            if(v.count(it)){
                v.erase(it);
            }else{
                v.insert(it);
            }
        }

        return *v.begin();
    }
};

https://ithelp.ithome.com.tw/upload/images/20261001/201842652nzUs2Wk77.png

題目解析: 給定一個整數n,回傳一個陣列,裡面依序紀錄從0到n的每一個數字,換算成二進位之後總共有幾個1
解題思路: 設一個空陣列v,丟進迴圈從0一路跑到n。每次先把計算1數量的變數ans歸零,並用變數q裝當前數字。接著跑內層迴圈,從可能的最大2的次方數開始往下找,如果q大於等於該2的次方數,就把q扣掉該數值,同時把ans加1。等q一路扣到0之後,把ans塞進陣列v裡面,最後回傳v

class Solution {
public:
    vector countBits(int n) {
        vector v;
        for(int i=0; i<=n; i++){
            int ans = 0, q = i;
            for(int j=pow(i, 0.5)+1; j>=0 && q != 0; j--){
                if(q >= pow(2, j)){
                    ans++;
                    q -= pow(2, j);
                }
            }

            v.push_back(ans);
        }

        return v;
    }
};

上一篇
C++ 演算法練習 Day16|198, 790, 62 題解與思路分享
系列文
30天刷完leetcoode75 共 17 篇
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言