剑指offer每日一题【扑克牌中的顺子、1 + 2 + .. N、数值的整数次方】

剑指offer每日一题【扑克牌中的顺子、1 + 2 + .. N、数值的整数次方】,第1张

剑指offer每日一题【扑克牌中的顺子、1 + 2 + .. N、数值的整数次方


扑克牌中的顺子.


class Solution {
public:
    bool isStraight(vector& nums) {

        set s;
        int maxi = -1,  mini = 14;
        for(auto &ref : nums)
        {
            if(ref == 0) continue;//遇到大小王就跳过
            if((s.insert(ref)).second == false ) return false;  
            //如果遇到重复包含的值那么就 返回 false
            s.insert(ref) ;
            maxi = max(maxi, ref);  //记录最大牌
            mini = min(mini, ref);  //记录最小牌

        }
        return maxi - mini < 5;  //如果最大值减去最小值的结果小于5那么该序列就是顺子
    }
};


求1+2+…+n.

class Solution {
public:
    int sumNums(int n) {
        char t[n][n+1]; //char是一字节 , n = 10  n * n+1 = 110
        return sizeof(t)>>1; //110字节/ 2 = 55 , ok
    }
};

递归写法

class Solution {
public:
    int sumNums(int n) {
       int ans = n;
       n > 0 && (ans += sumNums(n - 1)); //利用短路与的性质递归计算
      return ans;  
    }
};

数值的整数次方.

class Solution {
public:
    double myPow(double x, int n) {
       double ans = 1;
        for(long k = abs(long(n)); k > 0; k >>= 1) //防止溢出的做法是做整形提升
        {
            if(k & 1) ans *= x; //k为奇数时会多出来一个乘项x
             x *= x;
        }
             
        if(n < 0) ans = 1 / ans; //考虑n为负数的情况
        return ans;
    }   
};

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5694161.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存