本文主要是介绍[LeetCode] 137. Single Number II,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
题:https://leetcode.com/problems/single-number-ii/
题目大意
给定array,其中有一个元素只出现了1次,其他元素都出现了3次。
思路
求和 减去
(set(array)*3 - array)/2 作为答案。
class Solution {public int singleNumber(int[] nums) {Set<Long> set = new HashSet();Long sum = 0L;for(long num:nums){sum += num;set.add(num);}Long ssum = 0L ;for(long num:set){ssum += num;}return (int)((ssum*3 - sum)/2); }
}
位运算
对于 ^ 位运算,两个位 加运算但不进位。
对于三个元素,可以认为构造一种运算 使得 1 ,1 ,1相加时为0,思路是%。
class Solution {public int singleNumber(int[] nums) {int res = 0;for(int i = 0 ;i < 32 ;i++){int tsum = 0;for(int num : nums){tsum +=(num>>>i)&1;}tsum %=3;res = res|(tsum<<i);}return res;}
}
这篇关于[LeetCode] 137. Single Number II的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!