如何做产品众筹网站,中文单页面网站模板,网站建设开发服务费下什么科目,苏州教育平台网站建设题目#xff1a;
给你一个整数数组 nums #xff0c;除某个元素仅出现 一次 外#xff0c;其余每个元素都恰出现 三次 。请你找出并返回那个只出现了一次的元素。
你必须设计并实现线性时间复杂度的算法且使用常数级空间来解决此问题。 由于需要常数级空间和线性时间复杂度…题目
给你一个整数数组 nums 除某个元素仅出现 一次 外其余每个元素都恰出现 三次 。请你找出并返回那个只出现了一次的元素。
你必须设计并实现线性时间复杂度的算法且使用常数级空间来解决此问题。 由于需要常数级空间和线性时间复杂度常规的哈希表或者排序方法不适用。可以利用位运算来解决这个问题。具体思路如下 位运算 可以利用每个数字的二进制表示。 对于每一位bit统计所有数字中该位上1的个数。 如果某一位上的1的个数是3的倍数那么该位在只出现一次的那个数字中是0否则是1。 public class no_137 {public static void main(String[] args) {int[] nums {0, 1, 0, 1, 0, 1, 99};System.out.println(singleNumber(nums));}public static int singleNumber(int[] nums) {int ones 0, twos 0;for (int num : nums) {// 更新ones和twosones (ones ^ num) ~twos;twos (twos ^ num) ~ones;}return ones;}
}