首页 > 代码库 > Leetcode: Number Complement
Leetcode: Number Complement
Given a positive integer, output its complement number. The complement strategy is to flip the bits of its binary representation. Note: The given integer is guaranteed to fit within the range of a 32-bit signed integer. You could assume no leading zero bit in the integer’s binary representation. Example 1: Input: 5 Output: 2 Explanation: The binary representation of 5 is 101 (no leading zero bits), and its complement is 010. So you need to output 2. Example 2: Input: 1 Output: 0 Explanation: The binary representation of 1 is 1 (no leading zero bits), and its complement is 0. So you need to output 0.
Better solution:
public static int highestOneBit(int i)
Returns an
int
value with at most a single one-bit, in the position of the highest-order ("leftmost") one-bit in the specified int
value. 1 public class Solution { 2 public int findComplement(int num) { 3 return ~num & ((Integer.highestOneBit(num) << 1) - 1); 4 } 5 }
一般方法:
1 public class Solution { 2 public int findComplement(int num) { 3 int res = 0; 4 int i = 31; 5 while (i >= 0) { 6 if (((num >>> i) & 1) == 1) break; 7 i--; 8 } 9 while (i >= 0) { 10 if (((num >>> i) & 1) == 0) { 11 res |= 1<<i; 12 } 13 i--; 14 } 15 return res; 16 } 17 }
Leetcode: Number Complement
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。