给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。
说明:
你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗?
示例 1:
输入: [2,2,1]
输出: 1
示例 2:
输入: [4,1,2,1,2]
输出: 4
思路:我这个题主要考虑了不实用额外空间,没有卡线性时间的要求。直接遍历循环,建立一个信号量来判断本数是否唯一,是则直接跳出循环返回改值,否则继续验证下一个即可完成本次题目并且没有额外空间的引入。
class Solution {
public int singleNumber(int[] nums) {
//记号量,用于判断nums【i】是否是唯一
int num = 0;
//不实用空间,直接遍历判断
for(int i = 0; i < nums.length ; i++)
{
num = 0;
for(int j = 0 ; j < nums.length ; j++)
{
//只有有相等的数字且不是本身,让记号量改变
if(nums[i] == nums[j] && i!=j)
num = 1;
}
if(num == 0)
return nums[i];
}
return 0;
}
}