?LeetCode刷題實(shí)戰(zhàn)136:只出現(xiàn)一次的數(shù)字
Given a non-empty array of integers nums, every element appears twice except for one. Find that single one.
Follow up: Could you implement a solution with a linear runtime complexity and without using extra memory?
題意
示例 1:
輸入: [2,2,1]
輸出: 1
示例 2:
輸入: [4,1,2,1,2]
輸出: 4
解題
public?static?int?singleNumber(int[] nums)?{
????????int?num = 0;
????????for?(int?i = 0; i < nums.length; i++) {
????????????num = num ^ nums[i];
????????}
????????return?num;
????}
public?static?int?singleNumber(int[] nums) {
????????Setset?= new?HashSet<>();
????????for?(int?i = 0; i < nums.length; i++) {
????????????if?(!set.add(nums[i])) { // add成功返回true,如果set中已有相同數(shù)字,則add方法會(huì)返回false
????????????????set.remove(nums[i]); // 刪除重復(fù)出現(xiàn)的數(shù)字
????????????}
????????}
????????return?set.iterator().next(); }
public?static?int?singleNumber(int[] nums)?{
????????int?num = 0;
????????Arrays.sort(nums);
????????for?(int?i = 0; i < nums.length; i++) {
????????????// 偶數(shù)下標(biāo)位置 num += nums[i],奇數(shù)下標(biāo)位置 num -= nums[i]
????????????num = i % 2?== 0?? num + nums[i] : num - nums[i];
????????}
????????return?num;
????}
public?static?int?singleNumber(int[] nums)?{
????????int?num = 0;
????????for?(int?i = 0; i < nums.length; i++) {
????????????num = num ^ nums[i];
????????}
????????return?num;
????}
評(píng)論
圖片
表情
