Number of 1 Bits && Rotate Array && Reverse Bits
来源:互联网 发布:移动网络玩网通游戏 编辑:程序博客网 时间:2024/05/22 08:25
Number of 1 Bits
我的思路:
1、这题是找出一个二进制数中有多少个1。
2、我想是和1相与,然后循环移位一直32次,让一个数来计数就可以了。
代码如下:
int hammingWeight(uint32_t n) { int ans = 0; int i = 32; while (i--) { if (n & 1) ans++; n >>= 1; } return ans; }
别人思路:
1、让n和n-1相与,结果赋值给n,直到n==0为止,这个次数就是1的个数,速度要比我的快很多。
参考链接
Rotate Array
我的思路:
1、旋转数组,这和之前的旋转字符串差不多。
2、我自己写了一个平凡算法,结果是超时的。
3、参考链接 网上看到三次翻转法,还有其他的方法,这个文章讲得比较详细。从处理器和内存上来讲解。
4、在参考链接的提示下,写了自己的三次翻转。
代码如下:
void rotate(int nums[], int n, int k) { k %= n; for (int i = 0, j = n - k - 1; i < j; i++, j--) swap(nums[i], nums[j]); for (int i = n - k, j = n - 1; i < j; i++, j--) swap(nums[i], nums[j]); for (int i = 0, j = n - 1; i < j; i++, j--) swap(nums[i], nums[j]); }
Reverse Bits
我的思路:
1、将一个二进制数的位反转,不是翻转。
2、将每一个位移出来,将结果这个数不断左移加上这个数。
代码如下:
uint32_t reverseBits(uint32_t n) { uint32_t ans = 0; int i = 32; while (i--) { ans = (ans << 1) + (n & 1); n >>= 1; } return ans; }
0 0
- Number of 1 Bits && Rotate Array && Reverse Bits
- leetcode之Number of 1 Bits,Reverse Bits,Rotate Array
- Rotate bits of a number
- leetcode-190&191 Reverse Bits & Number of 1 Bits
- Bit Manipulation-----190. Reverse Bits&&191. Number of 1 Bits
- leetcode 190. Reverse Bits 191. Number of 1 Bits
- Number of 1 Bits
- Number of 1 Bits
- Number of 1 Bits
- Number of 1 Bits
- Number of 1Bits
- Number of 1 Bits
- Number of 1 Bits
- Number of 1 Bits
- Number of 1 Bits
- Number of 1 Bits
- Number of 1 Bits
- Number of 1 Bits
- 手机回拨手机代理 电话吸金业务 月收入过万
- 关于给Button设置selector的问题
- AfxRegisterWndClass
- JNA介绍及使用JNA监听鼠标实现
- 第 21、22 讲【项目 2-猴子选大王】
- Number of 1 Bits && Rotate Array && Reverse Bits
- leetcode[21 链表]Merge Two Sorted Lists
- uva 103 Stacking Boxes (DAG)
- Insert Interval
- (1.1.2.1)^、&、>>等运算符的特殊用法
- 线程Thread.join()介绍,实现线程工作时间统计
- HDU 2425 Hiking Trip(搜索+优先队列)
- 继续,黑苹果安装,HP 2560p, HP 8470p,微星 B85I
- shell命令