扑克牌中的顺子.
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;
}
};



