概述
????’???? ????????????, ???? ???????? ???? ???????????????????????????????? ???????????????????????????? ???????????????? ????????????????????????????, ????????????????????.
- ???? ????????????????????????: ???????????????????? ????????????????????????????????????????
- ???? ????????????????????????????????: ????’???? ???????????????????????????????????? ???????????????????????????????? ???????????????????????? ????????????????????????????, ????????????????????????????????, ???????????????????????????????????????????? ????????????????????????, ???????????????????????????????????????? ???????????? ???????? ????????.
- ???? ???????????? ???????? ???????????????????? ????????:????????
- ???? ???????? ????????????????: ????????????????????://????????????????????????????.????????????????.????????????????.????????????/
- ???? ???????????????????????????????????????????????? ????????????????????????:???????? ????????????????????
1-1:题目描述
在一个数组 nums 中除一个数字只出现一次之外,其他数字都出现了三次。请找出那个只出现一次的数字。
示例 1:
输入:nums = [3,4,3,3]
输出:4
示例 2:
输入:nums = [9,1,7,9,7,9,7]
输出:1
限制:
1 <= nums.length <= 10000
1 <= nums[i] < 2^31
通过次数104,456提交次数129,991
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/shu-zu-zhong-shu-zi-chu-xian-de-ci-shu-ii-lcof
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
1-2:位移运算解法
首先分析题目,这里的题目和上一道Java描述 LeetCode,剑指 Offer 56 - I. 数组中数字出现的次数
的区别在于,这里出现的是三次,对于出现三次的就不能单纯通过位移运算来解决了,首先看一个例子nums = [3,4,3,3],我们在二进制中表示出来。
就可以突然发现如果把每个位上出现1的进行统计,那么对应的那个位上的一定是3的倍数,那么剩下来的那个就是目标数的二进制表示,所以我们用count[32]数组来进行1的统计,统计完了之后再把每个位上面的数字对3求余,最后再从二进制数组,恢复成一个单独的数字即可。代码如下:
int n = nums.length;
int[] count = new int[32];
int m = count.length;
int number = 0;
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
count[j] += nums[i] & 1;
nums[i] >>>= 1;
}
}
for (int i = 0; i < m; i++) {
count[i] %= 3;
}
for (int i = 0; i < m; i++) {
number <<= 1;
number |= count[31 - i];
}
return number;
还有一种解法是有限状态机,那个我不会= =,感觉写出这个来也可以了。
最后
以上就是爱听歌火为你收集整理的Java描述 LeetCode,剑指 Offer 56 - II. 数组中数字出现的次数 II的全部内容,希望文章能够帮你解决Java描述 LeetCode,剑指 Offer 56 - II. 数组中数字出现的次数 II所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复