随笔分类 - 算法 / 位运算
摘要:1.递归 每次吧结果相乘 //递归快速幂 double myPow(double x, long long n) { //x x2 x4 x8 x16*x if(n >= 0){ return quickPow(x,n); }else{ //n为负数情况 n=-n; return 1.0/quick
阅读全文
摘要:int singleNumber(vector<int>& nums) { int l=nums.size(); sort(nums.begin(),nums.end()); if(l==1){ return nums[0]; } for(int i=0;i<l;i++){ //cout<<nums
阅读全文
摘要:uint32_t reverseBits(uint32_t n) { long ans=0; //从第一位算,计算完移位 for(int i=31;i>=0;i--){ if(n&1){ ans=ans+pow(2,i); } n=n>>1; } return ans; }
阅读全文
摘要:/* 使用 n & 1 得到二进制末尾是否为 1; 把 n 右移 1 位,直至结束。 */ int hammingWeight(uint32_t n) { int ans=0; for(int i=0;i<32;i++){ if(n&1){ ans++; } n=n>>1; } return ans
阅读全文
摘要://如果 n 是正整数并且 n & (n - 1) = 0那么 n 就是 2 的幂 //如果 n 是正整数并且 n \& (-n) = n,那么 n 就是 2 的幂。 bool isPowerOfTwo(int n) { if(n<=0){ return false; }else{ if((n&(n
阅读全文
摘要:左移运算 左移运算符“<<”是双目运算符。左移n位就是乘以2的n次方。 其功能把“<<”左边的运算数的各二进位全部左移若干位,由“<<”右边的数指定移动的位数,高位丢弃,低位补0。(x<<n == x*2^n) 右移运算 右移运算符“>>”是双目运算符。右移n位就是除以2的n次方。其功能是把“>>”
阅读全文