Single Number II
程序员文章站
2022-05-02 19:09:09
...
Given an array of integers, every element appears three times except for one. Find that single one.
Note:
Your algorithm should have a linear runtime complexity. Could you implement it without using extra memory?
给定一个数组,每个元素都出现了三次,只有一个元素出现一次,要求时间复杂度为O(n),空间复杂度为O(1),找到这个元素,我们采取位运算来解决。每个整型的数都有32位,我们记录数组中所有元素每位上的和,然后与3进行模运算,这样计算完32位上的值,最后的结果就是出现一次的元素。因为出现三次的元素与三取模后肯定为0,只保留了出现一次的元素。代码如下:
Note:
Your algorithm should have a linear runtime complexity. Could you implement it without using extra memory?
给定一个数组,每个元素都出现了三次,只有一个元素出现一次,要求时间复杂度为O(n),空间复杂度为O(1),找到这个元素,我们采取位运算来解决。每个整型的数都有32位,我们记录数组中所有元素每位上的和,然后与3进行模运算,这样计算完32位上的值,最后的结果就是出现一次的元素。因为出现三次的元素与三取模后肯定为0,只保留了出现一次的元素。代码如下:
public class Solution { public int singleNumber(int[] nums) { if(nums == null) return -1; int result = 0; for(int i = 0; i < 32; i++) { int sumBit = 0; for(int j = 0; j < nums.length; j++) { sumBit += (nums[j] >> i) & 1; } result |= (sumBit % 3) << i; } return result; } }
上一篇: Single Number III
下一篇: Single Number
推荐阅读
-
JavaScript中Number.MIN_VALUE属性的使用示例
-
JavaScript中Number.MAX_VALUE属性的使用方法
-
JavaScript中Number.NEGATIVE_INFINITY值的使用详解
-
#leetcode刷题之路45-跳跃游戏 II
-
SQL中distinct 和 row_number() over() 的区别及用法
-
完美解决input[type=number]无法显示非数字字符的问题
-
js中Number数字数值运算后值不对的解决方法
-
使用row_number()实现分页实例
-
leetcode 136 Single Number bit Option
-
硬盘各种接口IDE、SATA与SATA II的优缺点分析