给你两个整数 left 和 right ,表示区间 [left, right] ,返回此区间内所有数字 按位与 的结果(包含 left 、right 端点)。
示例 1:
输入:left = 5, right = 7 输出:4 示例 2:
输入:left = 0, right = 0 输出:0 示例 3:
输入:left = 1, right = 2147483647 输出:0
class Solution {public int rangeBitwiseAnd(int left, int right) {int index=0;for(int i=0;i<32;i++){if((left==right))break;left >>=1;right>>=1;index++;}return left <<=index;}
}
- 只出现一次的数字 II 已解答 中等 相关标签 相关企业 给你一个整数数组 nums ,除某个元素仅出现 一次 外,其余每个元素都恰出现 三次 。请你找出并返回那个只出现了一次的元素。
你必须设计并实现线性时间复杂度的算法且使用常数级空间来解决此问题。
示例 1:
输入:nums = [2,2,3,2] 输出:3
示例 2:输入:nums = [0,1,0,1,0,1,99] 输出:99
class Solution {public int singleNumber(int[] nums) {int[] arr=new int[32];for(int num:nums){for(int i=0;i<32;i++){arr[31-i] +=num &1;num >>=1;}}int end =0;for(int j=0;j<32;j++){arr[31-j] %=3;end |= arr[31-j]<<j;}return end;}
}
- 只出现一次的数字
已解答
简单
相关标签
相关企业
给你一个 非空 整数数组 nums ,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。
你必须设计并实现线性时间复杂度的算法来解决此问题,且该算法只使用常量额外空间。
示例 1 :
输入:nums = [2,2,1]
输出:1
示例 2 :
输入:nums = [4,1,2,1,2]
输出:4
示例 3 :
输入:nums = [1]
输出:1
class Solution {public int singleNumber(int[] nums) {int[] arr=new int[32];for(int num: nums){for(int i=0;i<32;i++){arr[31-i] +=num &1;num >>=1;}}int end =0;for(int j=0;j<32;j++){arr[31-j] %= 2;end |= arr[31-j] <<j;}return end;}
}