Twitter OA prepare: Two Operations
分析:这道题就是看这个二进制数most significant bit的1左移了多少位,即是所需的乘2次数;然后除开Most Significant bit的这个1之后的其它1的个数,就是需要加1的次数
比如15,1111,most significant bit的1是左移三位得到的,所以需要乘2三次,剩下111三个1,所以需要加1 三次,总操作3+3+1=7次。
6 public static int shortest(int target) { 7 if (target < 1) { 8 return -1; 9 } 10 int count = 1; 11 while (target != 1) { 12 if (target % 2 == 0) { 13 target /= 2; 14 } else { 15 target -= 1; 16 } 17 count ++; 18 } 19 return count; 20 }Twitter OA prepare: Two Operations