力扣268:缺失数字 python&&c

题目:

力扣268:缺失数字 python&&c_第1张图片题目简单,容易理解,直接上代码:

  • 哈希表
    所谓哈希表不需要记得特别复杂,稍稍了解一下,哈希函数其实就是一种通过关键字查询到位置的函数,而哈希表就是存了这些位置。如下
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

你可能感兴趣的:(算法,leetcode,python,算法,哈希表)