题目:
题目简单,容易理解,直接上代码:
- 哈希表
所谓哈希表不需要记得特别复杂,稍稍了解一下,哈希函数其实就是一种通过关键字查询到位置的函数,而哈希表就是存了这些位置。如下↓
int missingNumber(int* nums, int numsSize){//哈希
int *flag=(int*)calloc(numsSize+1,sizeof(int));
int re_int;
for(int i=0;i<numsSize;i++){
flag[nums[i]]=-1;
}
for(int i=0;i<=numsSize;i++){
if(flag[i]!=-1){
re_int=i;
break;
}
}
return re_int;
- 位运算:异或运算
这里我们用到了位运算的总运算,我们知道0对任何一个数字按位异或都等于那个数字,那么我们将数组的下标,和所有的元素,合在一块1总运算,亦如
例一: 0 ^ 3 ^ 1 ^ 0 ^2 ^ 1 ^ 3=0 ^ 0 ^1 ^ 1 ^ 3 ^ 3 ^ 2=2
代码:
int missingNumber(int* nums, int numsSize){//异或
int re_int = numsSize;
for(int i = 0; i < numsSize; i++)
re_int ^= i ^ nums[i];
return re_int;
- python
利用set的有序性,实现复杂度为O(n)的算法
class Solution:
def missingNumber(self, nums):
num_set,l = set(nums),len(nums) + 1
for number in range(l):
if number not in num_set:
return number