0
点赞
收藏
分享

微信扫一扫

只出现一次的数字


1.给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。

2.说明:
你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗?

3.示例 1:
输入: [2,2,1]
输出: 1
示例 2:
输入: [4,1,2,1,2]
输出: 4

4.程序实现:
法一:

int singleNumber(int* nums, int numsSize)//先排序,再比较异同,复杂度较高,也比较慢
{
    int i,j,k;
    for(i=0;i<numsSize-1;i++)
        for(j=i+1;j<numsSize;j++)
            if(nums[j]<=nums[i])
            {
                k=nums[j];
                nums[j]=nums[i];
                nums[i]=k;
            }
    for(i=0;i<(numsSize-1);i+=2)
        if(nums[i]!=nums[i+1])
            return nums[i];
    return nums[i];
    }

法二:

int singleNumber(int* nums, int numsSize)//异或法,摘自他人,自愧弗如,暂定位最优解。
{	
	int result = nums[0];
	for (int i = 1; i < numsSize; i++)
	{
		result ^= nums[i];
	}
	return result;
}

5.今晚遇到了一个观念很相近的小姐姐,大学以来很少的能聊的开的女孩,加油,冲鸭!!!


举报

相关推荐

0 条评论