每日一题day3:[LeetCode:HOT100 15、22、102、198、62、55]

每日一题day3:LeetCode

15. 三数之和

22. 括号生成

102. 二叉树的层序遍历

198. 打家劫舍

62. 不同路径

55. 跳跃游戏


1、15. 三数之和

class Solution {
    
    
public:
    vector<vector<int>> ans;
    vector<vector<int>> threeSum(vector<int>& nums) {
    
    
        int size = nums.size();
        int l, r;
        sort(nums.begin(), nums.end());
        for(int i = 0; i < size - 2; i++){
    
    
            l = i + 1, r = size - 1;
            if(nums[i] > 0) return ans;
            if(i && nums[i] == nums[i - 1]) continue;
            while(l < r){
    
    
                int sum = nums[i] + nums[l] + nums[r];
                if(sum == 0){
    
    
                    vector<int> now;
                    now.push_back(nums[i]);
                    now.push_back(nums[l]);
                    now.push_back(nums[r]);
                    ans.push_back(now);
                    while(l < r && nums[l] == nums[l + 1]) l++;
                    while(l < r && nums[r] == nums[r - 1]) r--;
                    l++; r--;
                }else if(sum > 0){
    
    
                    r--;
                }else l++;
            }
        }
        return ans;
    }
};

2、22. 括号生成

class Solution {
    
    
public:
    void dfs(vector<string>& ans, string now, int n, int l, int r){
    
    
        if(r > l || l > n || r > n) return ;
        if(l == r && l == n){
    
    
            ans.push_back(now);
            return ;
        }
        dfs(ans, now + '(', n, l + 1, r);
        dfs(ans, now + ')', n, l, r + 1);
    }
    vector<string> generateParenthesis(int n) {
    
    
        vector<string> ans;
        dfs(ans, "", n, 0, 0);
        return ans;
    }
};

3、102. 二叉树的层序遍历

/**
 * Definition for a binary tree node.
 * struct TreeNode {
 *     int val;
 *     TreeNode *left;
 *     TreeNode *right;
 *     TreeNode() : val(0), left(nullptr), right(nullptr) {}
 *     TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
 *     TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}
 * };
 */
class Solution {
    
    
public:
    vector<vector<int>> levelOrder(TreeNode* root) {
    
    
        queue<TreeNode*> que;
        que.push(root);
        vector<vector<int>> ans;
        if(root == NULL) return ans;
        while(!que.empty()){
    
    
            int size = que.size();
            vector<int> now;
            while(size--){
    
    
                TreeNode* temp = que.front(); que.pop();
                now.push_back(temp -> val);
                if(temp -> left) que.push(temp -> left);
                if(temp -> right) que.push(temp -> right);
            }
            ans.push_back(now);
        }
        return ans;
    }
};

4、198. 打家劫舍

class Solution {
    
    
public:
    int rob(vector<int>& nums) {
    
    
        int ans, a, b;
        int size = nums.size();
        if(!size) return 0;
        else if(size == 1) ans = nums[0];
        else if(size == 2) ans = max(nums[0], nums[1]);
        else{
    
    
            a = nums[0]; b = max(nums[0], nums[1]);
            for(int i = 2; i < size; i++){
    
    
                ans = max(b, a + nums[i]);
                a = b; b = ans;
            }
        }
        return ans;
    }
};

5、62. 不同路径

class Solution {
    
    
public:
    int uniquePaths(int m, int n) {
    
    
        swap(n, m);
        int dp[n][m];
        for(int i = 0; i < n; i++){
    
    
            for(int j = 0; j < m; j++){
    
    
                if(!i || !j){
    
    
                    dp[i][j] = 1;
                }else{
    
    
                    dp[i][j] = dp[i - 1][j] + dp[i][j - 1];
                }
            }
        }
        return dp[n - 1][m - 1];
    }
};

6、55. 跳跃游戏

class Solution {
    
    
public:
    bool canJump(vector<int>& nums) {
    
    
        int r = 0, size = nums.size();
        for(int i = 0; i < size - 1; i++){
    
    
            if(r >= i){
    
    
                r = max(r, i + nums[i]);
            }else{
    
    
                return false;
            }
        }
        if(r >= size - 1) return true;
        return false;
    }
};

2021/3/7完结(也就5天没刷题了,手感就严重下滑,看来还是要经常刷题来着)。

猜你喜欢

转载自blog.csdn.net/shangzhengyu/article/details/114475465
今日推荐