随笔分类 -  算法 / 位运算

摘要: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 阅读全文
posted @ 2022-10-04 19:17 lwx_R 阅读(21) 评论(0) 推荐(0) 编辑
摘要: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 阅读全文
posted @ 2022-09-16 13:59 lwx_R 阅读(11) 评论(0) 推荐(0) 编辑
摘要: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; } 阅读全文
posted @ 2022-09-16 13:58 lwx_R 阅读(23) 评论(0) 推荐(0) 编辑
摘要:/* 使用 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 阅读全文
posted @ 2022-09-16 13:58 lwx_R 阅读(20) 评论(0) 推荐(0) 编辑
摘要://如果 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 阅读全文
posted @ 2022-09-16 13:57 lwx_R 阅读(11) 评论(0) 推荐(0) 编辑
摘要:左移运算 左移运算符“<<”是双目运算符。左移n位就是乘以2的n次方。 其功能把“<<”左边的运算数的各二进位全部左移若干位,由“<<”右边的数指定移动的位数,高位丢弃,低位补0。(x<<n == x*2^n) 右移运算 右移运算符“>>”是双目运算符。右移n位就是除以2的n次方。其功能是把“>>” 阅读全文
posted @ 2022-02-22 19:00 lwx_R 阅读(140) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示