//给你一个整数数组 nums ,除某个元素仅出现 一次 外,其余每个元素都恰出现 三次 。请你找出并返回那个只出现了一次的元素。 // // // // 示例 1: // // //输入:nums = [2,2,3,2] //输出:3 // // // 示例 2: // // //输入:nums = [0,1,0,1,0,1,99] //输出:99 // // // // // 提示: // // // 1 <= nums.length <= 3 * 104 // -231 <= nums[i] <= 231 - 1 // nums 中,除某个元素仅出现 一次 外,其余每个元素都恰出现 三次 // // // // // 进阶:你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗? // Related Topics 位运算 // 👍 565 👎 0 package leetcode.editor.cn; import lombok.val; import java.util.HashMap; import java.util.Map; //137:只出现一次的数字 II public class SingleNumberIi { public static void main(String[] args) { //测试代码 Solution solution = new SingleNumberIi().new Solution(); } //力扣代码 //leetcode submit region begin(Prohibit modification and deletion) class Solution { public int singleNumber(int[] nums) { Map map = new HashMap<>(); for (int num : nums) { map.put(num, map.getOrDefault(num, 0) + 1); } for (int num : map.keySet()) { if (map.get(num) == 1) { return num; } } return 0; // // 官方 // int ones = 0, twos = 0; // for(int num : nums){ // ones = ones ^ num & ~twos; // twos = twos ^ num & ~ones; // } // return ones; } } //leetcode submit region end(Prohibit modification and deletion) }