栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

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

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

剑指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;
    }   
};
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/693697.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号