leetcode的每天一题更新(singleNumber)

题目:给一个数组,返回里面唯一没有重复的数字。
解题思路:先将这个数组排序,用的是Arrays.sort,其实可以自己用快排来实现,只是学得不够好,只好用系统提供的方法,排序以后,循环一边,首先如果i==nums.length-1,直接return nums[i],如果i和i+1相等就i++,否则返回nums[i]的值,为了不报错在循环外面写一个return 0.
附上代码:

public class Solution {
    public int singleNumber(int[] nums) {
        Arrays.sort(nums);
        for(int i=0;i<nums.length;i++){
            if(i==nums.length-1)return nums[i];
            if(nums[i]==nums[i+1]){
                i++;
            }else if(nums[i]!=nums[i+1]){
                return nums[i];
            }
        }
        return 0;
    }
}

再次更新,学到一个新知识点,A XOR A=0,就是一个数异或其本身为0 因为A XOR A = 0,且XOR运算是可交换的,于是,对于实例{2,1,4,5,2,4,1}就会有这样的结果:

(2145241) => ((22)(11)(44)(5)) => (000^5) => 5

附上代码:

int singleNumber(int A[], int n) {
    int result = 0;
    for (int i = 0; i<n; i++)
    {
        result ^=A[i];
    }
    return result;
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

友情链接更多精彩内容