头像

He0531


访客:1390

离线:2个月前



He0531
3个月前
class Solution {
public:
    int strToInt(string str) {
        int k=0;
        while(k<str.size() && str[k]==' ') k++;
        long long number=0;
        bool aa=false;
        if(str[k]=='+') k++;
        else if(str[k]=='-') k++,aa=true;

        while(k<str.size() && str[k]<='9' && str[k]>='0')
        {
            number=number*10 +str[k]-'0';
            k++;
        }
        if(aa) number*=-1;
        if(number>INT_MAX)  number=INT_MAX;
        if(number<INT_MIN)  number=INT_MIN;  
        return number;

    }
};


活动打卡代码 AcWing 86. 构建乘积数组

He0531
3个月前
class Solution {
public:
    vector<int> multiply(const vector<int>& A) {
        if(A.empty()) return vector<int>();


        int n=A.size();        
        vector<int> B(n);



        for(int i=0,p=1;i<n;i++)
        {
            B[i]=p;//因为本项不参与
            p*=A[i];

        }
        for(int i=n-1,p=1;i>=0;i--)
        {
            B[i]*=p;
            p*=A[i];

        }
        return B;
    }
};



He0531
3个月前
class Solution {
public:
    int add(int num1, int num2){
        while(num2!=0)//最多左移动32次
        {
            int sum = num1 ^ num2;//不进位的加法
            int carry = (num1 & num2)<<1;//进位
            num1 = sum;
            num2 = carry;
        }
        return num1;
    }
};


活动打卡代码 AcWing 84. 求1+2+…+n

He0531
3个月前
class Solution {
public:
    int getSum(int n) {
        int res=n;
        n>0 && (res+=getSum(n-1));
        return res;
    }
};



He0531
3个月前
class Solution {
public:
    int maxDiff(vector<int>& nums) {
        if(nums.empty()) return 0;

        int res;
        int minv=nums[0];
        for(int i=1;i<nums.size();i++)
        {
            res=max(res,nums[i]-minv);
            minv=min(minv,nums[i]);
        }
        return res;

    }
};



He0531
3个月前
class Solution {
public:
    int lastRemaining(int n, int m){
        //可以转化为地推问题,找到f[n]和f[n-1]之间的关系
        if(n==1) return 0;
        return (lastRemaining (n-1,m)+m)%n;//再推

    }
};


活动打卡代码 AcWing 81. 扑克牌的顺子

He0531
3个月前
class Solution {
public:
    bool isContinuous( vector<int> nums ) {
        if(nums.empty()) return false;

        sort(nums.begin(),nums.end());
        int k=0;

        //重复
        while(nums[k]==0)
          k++;

        //
        for(int i=k+1;i<nums.size();i++)
            if(nums[i]==nums[i-1])  return false;

        return nums.back()-nums[k]<=4;




    }
};


活动打卡代码 AcWing 80. 骰子的点数

He0531
3个月前
class Solution {
public:
    vector<int> numberOfDice(int n) {

        //dp问题
        vector<vector<int>> f(n+1,vector<int>(n*6+1));//
        f[0][0]=1;
        for(int i=1;i<=n;i++)//所有可能的情况
            for(int j=1;j<=6*i;j++) //??????????????
              for(int k=1;k<=min(j,6);k++)//本次要指出来的点数
                f[i][j]+=f[i-1][j-k];
        vector<int> res;
        for(int i=n;i<=6*n;i++)   res.push_back(f[n][i]);
        return res;
}

};
//dp问题
//状态转移
//边界



He0531
3个月前
class Solution {
public:

//单调队列
//队列中一定是一个递减的
    vector<int> maxInWindows(vector<int>& nums, int k) {
        vector<int> res;
        deque<int> q;//存的是下标
        for(int i=0;i<nums.size();i++)
        {
            while(q.size() && q.front()<=i-k) q.pop_front();
            while(q.size() && nums[q.back()]<=nums[i]) q.pop_back();
            q.push_back(i);
            if(i>=k -1) res.push_back(nums[q.front()]);
        }
        return res;
    }
};


活动打卡代码 AcWing 78. 左旋转字符串

He0531
3个月前
class Solution {
public:
    string leftRotateString(string str, int n) {
        reverse(str.begin(),str.end());//str.begin()+str.size()=str.end()
        reverse(str.begin(),str.begin()+str.size()-n);
        reverse(str.begin()+str.size()-n,str.end());   
        return str;

    }
};