leetcode 137 && 360一面算法
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了leetcode 137 && 360一面算法相关的知识,希望对你有一定的参考价值。
题目描述:给一个数组,有一个数出现了两次或者1次,而其他数都出现了三次,找出这个数。其实对应了leetcode 137。
网上的解法多是位运算
public int singleNumber(int[] nums) { int ans = 0; for(int i = 0; i < 32; i++) { int sum = 0; for(int j = 0; j < nums.length; j++) { if(((nums[j] >> i) & 1) == 1) { sum++; sum %= 3; } } if(sum == 1) { ans |= sum << i; } if(sum == 2) { ans |= sum/2 << i } } return ans; }
利用位运算,求每位1出现的次数,出现3次的最后加起来%3==0. !=0的要么是1次,要么是2次。分情况讨论就行。最后的| 或运算,很强哦。。。
以上是关于leetcode 137 && 360一面算法的主要内容,如果未能解决你的问题,请参考以下文章