Given a non-empty array of integers nums, every element appears twice except for one. Find that single one.
给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。
说明:
You must implement a solution with a linear runtime complexity and use only constant extra space.
你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗?
Example 1:示例 1:
Input: nums = [2,2,1]
Output: 1
输入: [2,2,1] 输出: 1
Example 2:示例 2:
Input: nums = [4,1,2,1,2]
Output: 4
输入: [4,1,2,1,2] 输出: 4
Example 3:
Input: nums = [1]
Output: 1
Constraints:
1 <= nums.length <= 3 *
-3 * <= nums[i] <= 3 *
Each element in the array appears twice except for one element which appears only once.
C语言:(异或运算)
int singleNumber(int* nums, int numsSize){
for(int i=1;i<numsSize;i++)
nums[0]^=nums[i];
return nums[0];
}
执行结果: 通过
执行用时:16 ms, 在所有 C 提交中击败了88.61%的用户
内存消耗:7 MB, 在所有 C 提交中击败了61.65%的用户
通过测试用例:61 / 61
C语言:(暴力法)
int singleNumber(int* nums, int numsSize){
int result;
for(int i=0;i<numsSize;i++)
{
for(int j=0;j<numsSize;j++)
{
if((nums[i]==nums[j])&&(i!=j))
{break;}
if(j==numsSize-1)
{result=nums[i];}
}
}
return result;
}
执行结果:通过
执行用时:1020 ms, 在所有 C 提交中击败了6.61%的用户
内存消耗:7.1 MB, 在所有 C 提交中击败了41.73%的用户
通过测试用例:61 / 61