码迷,mamicode.com
首页 > 其他好文 > 详细

LeetCode实战练习题目 - Array

时间:2020-02-28 01:08:30      阅读:50      评论:0      收藏:0      [点我收藏+]

标签:sort   题目   习题   int   练习题   etc   The   res   cli   

实战练习题目 - Array

盛最多水的容器

class Solution {
public:
int maxArea(vector<int>& height) {
    int res = 0;
    int i = 0;
    int j = height.size() - 1;
    while (i < j) {
        int area = (j - i) * min(height[i], height[j]);
        res = max(res, area);
        if (height[i] < height[j]) {
            i++;
        } else {
            j--;
        }
    }
    return res;
}
};

移动零

class Solution {
public:
    void moveZeroes(vector<int>& nums) {
        int n = nums.size();

        int numZeroes = 0;
        for (int i = 0; i < n; i++) {
            numZeroes += (nums[i] == 0);
        }
        vector<int> ans;
        for (int i = 0; i < n; i++) {
            if (nums[i] != 0) {
                ans.push_back(nums[i]);
            }
        }

        while (numZeroes--) {
            ans.push_back(0);
        }
        for (int i = 0; i < n; i++) {
            nums[i] = ans[i];
        }
    
    }
};

爬楼梯

class Solution {
public:
    long long GetCni(int n, int i) {
        i = (n - i > i)? i : (n - i);
        if(i == 0) return 1;
        else return GetCni(n, i-1)*(n-i+1)/i;
    }
    int climbStairs(int n) {
        int i = 0;
        int Sum = 0;
        while(i <= n/2) {
            Sum += GetCni(n-i, i);
            i++;
        }
        return Sum;
    }
};

三数之和

class Solution {
public:
    vector<vector<int> > threeSum(vector<int>& nums) {
        vector<vector<int> > ret;
        vector<int > vtemp;
        int len = nums.size();
        sort(nums.begin(),nums.end());//sort the input
        for(int i=0;i<len-2;i++){
            if(i ==0 ||(i>0 && nums[i] != nums[i-1])){
                int p1 = i+1, p2 = len-1; // set two pointers
                while(p1 < p2){
                    if(nums[p1] + nums[p2] < -nums[i]){
                        p1++;
                    }else if(nums[p1] + nums[p2] == -nums[i]){
                        if(p1 == i+1){
                            vector<int > vtemp{nums[i], nums[p1], nums[p2]};
                            ret.push_back(vtemp);
                            vtemp.clear();

                        }else if(nums[p1] != nums[p1-1]){
                            vector<int > vtemp{nums[i], nums[p1], nums[p2]};
                            ret.push_back(vtemp);
                            vtemp.clear();

                        }
                        p1++,p2--;
                    }else{
                         p2--;
                    }
                }
            }


        }
        return ret;

    }
};

LeetCode实战练习题目 - Array

标签:sort   题目   习题   int   练习题   etc   The   res   cli   

原文地址:https://www.cnblogs.com/liugangjiayou/p/12375216.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!