【leetcode】Single Number (java)

Single Number

Given an array of integers, every element appears twice except for one. Find that single one.

Note:
Your algorithm should have a linear runtime complexity. Could you implement it without using extra memory?

题意大致是一个数组中数成对出现(除了一个数),找出唯一出现一次的那个数。

解题思路:

  1. 两层的for循环解决,O(n^2)

  2. 排序后再去找到,要预处理。。。

  3. 用一个ArrayList存已经出现的数字,会需要有额外的空间。。。

 好吧,我又没有找到解决办法呢。。。从此改为:思考后搜答案系列 - -|||

最终解决:

因为是成对出现,对数组中所有元素做异或操作,就可以找到出现一次的整数。

(一直以来基本没有用过java中的位运算,思路太狭窄了啊。。。)

我写的:

public class Solution {
    public int singleNumber(int[] nums) {
        //不存在时,返回
        //感觉此处返回0也不太准确
        if(nums == null || nums.length == 0)
            return 0;
        int result = nums[0];
        
        for(int i = 1; i < nums.length; i++){
            result = result ^ nums[i];
        }
        return result;
    }
}


这几天出去浪了好多,没法做到每日一题,好羞耻。。。


希望自己真的可以坚持下去吧。

你可能感兴趣的:(java,LeetCode)