扑克牌中的顺子.
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; } };
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)