从零开始的刷LeetCode生活 第19期 191-200

在这里插入图片描述
在这里插入图片描述

class Solution {
public:
    int hammingWeight(uint32_t n) {
        int res = 0;
        for(int i = 0; i < 32; i ++)
            if(n >> i & 1)
                res ++;
        return res;
    }
};

在这里插入图片描述
在这里插入图片描述

class Solution {
public:
    int rob(vector<int>& nums) {
        int n = nums.size();
        vector<int>f(n + 1, 0), g(n + 1, 0);
        for(int i = 1; i <= n; i ++)
        {
            f[i] = g[i - 1] + nums[i - 1];
            g[i] = max(f[i - 1], g[i - 1]);
        }
        return max(f[n], g[n]);
    }
};

在这里插入图片描述

/**
 * Definition for a binary tree node.
 * struct TreeNode {
 *     int val;
 *     TreeNode *left;
 *     TreeNode *right;
 *     TreeNode(int x) : val(x), left(NULL), right(NULL) {}
 * };
 */
class Solution {
public:
    vector<int> rightSideView(TreeNode* root) {
        vector<int> res;
        queue<pair<TreeNode*, int>>Q;
        if(root)
            Q.push(make_pair(root, 0));
        while(!Q.empty())
        {
            TreeNode* node = Q.front().first;
            int depth = Q.front().second;
            Q.pop();
            if(res.size() == depth)
                res.push_back(node->val);
                else
                    res[depth] = node->val;
                if(node->left)
                    Q.push(make_pair(node->left, depth + 1));
                if(node->right)
                    Q.push(make_pair(node->right, depth + 1));
        }
        return res;
    }
};

在这里插入图片描述

class Solution {
public:
    int n, m;
    int numIslands(vector<vector<char>>& grid) {
        if(grid.empty() || grid[0].empty()) return 0;
        n = grid.size(), m = grid[0].size();
        int res = 0;
        for(int i = 0; i < n; i ++)
            for(int j = 0; j < m; j ++)
                if(grid[i][j] == '1')
                {
                    res ++;
                    dfs(grid, i, j); //每一次吧1周围赋值为0
                }
        return res;
    }

    void dfs(vector<vector<char>>&grid, int x, int y)
    {
        int dx[4] = {-1, 0, 1, 0}, dy[4] = {0, 1, 0, -1};
        grid[x][y] = '0';
        for(int i = 0; i < 4; i ++)
        {
            int a = x + dx[i], b = y + dy[i];
            if(a >= 0 && a < n && b >= 0 && b < m && grid[a][b] == '1')
                dfs(grid, a, b);
        }
    }
};
发布了114 篇原创文章 · 获赞 33 · 访问量 7054

猜你喜欢

转载自blog.csdn.net/qq_42549254/article/details/104010119