136-简单-只出现一次的数字

在这里插入图片描述
方法1 直接解算 时间O(n2)

int singleNumber(int* nums, int numsSize) {
	int i = 0;
	int j = 0;
	for (i = 0; i < numsSize; i++){
		for (j = 0; j < numsSize; j++){
			if ((i != j) && (nums[i]== nums[j])){
				break;
			}
		}
        if(j == numsSize){
            return nums[i];
        }
	}
	return 0;
}

方法二 亦或法 时间O(n),题目标明重复元素是出现两次,所以temp会对某一个数亦或两次,按位亦或,相同为0 不同为1,两次亦或则为0,所以会0亦或单独的数,为那个数

int singleNumber(int* nums, int numsSize) {
    int temp = nums[0];

    if (numsSize <= 1) {
        return nums[0];
    }
    for (int i = 1; i < numsSize; i++) {
        temp ^= nums[i];
    }
    return temp;
}

猜你喜欢

转载自blog.csdn.net/lala0903/article/details/107739683