iT邦幫忙

2026 iThome 鐵人賽

DAY 16
0
Software Development

30天刷完leetcoode75系列 第 16 篇

C++ 演算法練習 Day16|198, 790, 62 題解與思路分享

  • 分享至 

  • xImage
  •  

https://ithelp.ithome.com.tw/upload/images/20260930/20184265RsrfPU7Z7x.png

題目解析:給定陣列代表每間房的現金,不能偷相鄰的房子,找出最多能偷多少錢
解題思路:只有一間就直接回傳。設陣列v,把第一間和前兩間較大的值當基礎放入。接著丟進迴圈從第三間開始跑,比較「這間加前兩間」跟「只拿前一間」,挑大的塞進v。最後回傳v最後兩個數字較大的一個

class Solution {
public:
    int rob(vector& nums) {
        if(nums.size() == 1) return nums.back();
        vector v;
        v.push_back(nums[0]);
        v.push_back(max(nums[1], nums[0]));

        for(int i=2; i v(1005);
        v[1] = 1;
        v[2] = 2;
        v[3] = 5;

        for(int i=4; i<=n; i++){
            v[i] = (2 * v[i-1] + v[i-3]) % mod;
        }

        return v[n];
    }
};

https://ithelp.ithome.com.tw/upload/images/20260930/20184265y1KGxnEEqT.png

題目解析:給定一個迷宮矩陣,找出從指定的起點走到最近出口(迷宮邊界的空地)最少需要走幾步,起點本身不能算作出口
解題思路:設一個變數ans來記錄最少步數。寫一個遞迴函數,把走過的路直接改成牆壁 '+' 防止重複走。每次檢查上下左右四個方向,如果是空地 '.' 就步數加1繼續遞迴走下去,如果走到邊界就把累積的步數跟ans比大小並更新,最後回傳ans

class Solution {
public:
    int numTilings(int n) {
        int mod = 1e9+7;
        vector<long long int> v(1005);
        v[1] = 1;
        v[2] = 2;
        v[3] = 5;

        for(int i=4; i<=n; i++){
            v[i] = (2 * v[i-1] + v[i-3]) % mod;

        }

        return v[n];
    }
};

https://ithelp.ithome.com.tw/upload/images/20260930/20184265zEBCAxmVK8.png

題目解析:機器人從網格左上角出發,只能往下或往右走,找出走到右下角有幾種路徑
解題思路:設二維陣列v,把最左邊和最上面那排的路徑數設為1。接著丟進雙層迴圈,每個格子的路徑數等於它上方加左方格子的總和。迴圈跑完,直接回傳右下角最後一格的數字

class Solution {
public:
    int uniquePaths(int m, int n) {
        vector<vector<int>> v(m, vector<int>(n));
        for(int i=0; i<m; i++){
            v[i][0] = 1;
        }

        for(int i=0; i<n; i++){
            v[0][i] = 1;
        }

        for(int i=1; i<m; i++){
            for(int j=1; j<n; j++){
                v[i][j] = v[i-1][j] + v[i][j-1];
            }
        }

        return v[m-1][n-1];
    }
};

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

尚未有邦友留言

立即登入留言