nowcoder
低调的进步
这个作者很懒,什么都没留下…
展开
-
输入一个整数,求该整数的二进制表示中有多少个1
求一个整数的二进制中1的个数。 题目:输入一个整数,求该整数的二进制表达中有多少个1。例如输入10,由于其二进制表示为1010,有两个1,因此输出2。 分析:这是一道很基本的考查位运算的面试题。包括微软在内的很多公司都曾采用过这道题。 一个很基本的想法是:我们先判断整数的最右边一位是不是1。接着把整数右移一位,原来处于右边第二位的数字现在被移到转载 2015-06-20 13:01:33 · 4168 阅读 · 0 评论 -
负数的左移与右移
1)负数的右移:负数右移的话,由于要保持它是负数,所以负数的二进制的右边补1。如果一直右移的话,最后就就变成0xFFFFFFFF 即-1如: -4>>1 为-2 ;-4>>2为-12)负数的左移:跟正整数左移一样,右边补0,一直左移的话,最后就是0啦。-2<<2 为-4 ; -2对于LeetCode和 剑客Offer上 关于二进制数中1的个数的指示补充。原创 2015-06-21 16:20:06 · 3660 阅读 · 2 评论 -
剑指Offer旋转数组中的最小数字
题目:把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个递增的排序的数组的一个旋转,输出旋转数组的最小元素。例如输入{1,2,3,4,5}的一个旋转为{3,4,5,1,2},该数组的最小值为1。分析最直观的想法就是顺序遍历一次数组,就能够找出最小的数字,这样的时间复杂度是O(n)。既然叫做旋转数组,那么我们就需要利用好旋转数组的特性。看到这样的旋原创 2015-06-23 13:38:57 · 317 阅读 · 0 评论