leetcode算法 每日一题(17.04消失的数字)day 1

简介: 今天开始小编开始给大家带来算法题目的讲解,首先我们看题目描述

今天开始小编开始给大家带来算法题目的讲解,首先我们看题目描述


image.png


这里我们有三种思路,首先是比较常规的方法,也是大家比较常见的,这里我们开辟一块空间,对这个数组出现的数,进行标记,然后通过判断找到缺失的那个数,这里的时间复杂度是O(N)。


int missingNumber(int* nums, int numsSize){
   int *arr=(int*)calloc(numsSize+1,sizeof(int));
   int i=0;
   for(i=0;i<numsSize;i++)
   {
       arr[nums[i]]++;
   }
   for(i=0;i<numsSize;i++)
   {
       if(arr[i]==0)
       {
         break;
       }
   }
   return i;
}

image.png



思路二,这里我们就要利用^操作符的一个特性,这里我直接给大家结论,推导过程我会在操作符的介绍时具体讲解。结论是:


1.a^a=0


2.0^a=a


接下来直接给大家上代码


int missingNumber(int* nums, int numsSize){
   int val=0;
   for(int i=0;i<numsSize;i++)
   {
       val^=nums[i];
   }
   for(int i=0;i<=numsSize;i++)
   {
       val^=i;
   }
   return val;
}

这里最后得到的val就是那个缺失的数字。



image.png


思路三,这里我们就要基于数组本身出发,利用该和形式相减得到那个缺失的数字


代码如下:

int missingNumber(int* nums, int numsSize){
    int i=0;
    int sum=0;
    int ret=0;
    for(i=0;i<numsSize+1;i++)
    {
        sum=sum+i;
    }
    for(i=0;i<numsSize;i++)
    {
        ret=nums[i]+ret;
    }
    return sum-ret;
}

这里也是完美通过。




image.png

相关文章
|
2月前
|
存储 算法 JavaScript
怎么刷算法,leetcode上有哪些经典题目
怎么刷算法,leetcode上有哪些经典题目
18 0
|
2月前
|
算法 Java
[Java·算法·中等] LeetCode15. 三数之和
[Java·算法·中等] LeetCode15. 三数之和
35 0
|
7天前
|
存储 算法
Leetcode 30天高效刷数据结构和算法 Day1 两数之和 —— 无序数组
给定一个无序整数数组和目标值,找出数组中和为目标值的两个数的下标。要求不重复且可按任意顺序返回。示例:输入nums = [2,7,11,15], target = 9,输出[0,1]。暴力解法时间复杂度O(n²),优化解法利用哈希表实现,时间复杂度O(n)。
19 0
|
24天前
|
算法
代码随想录算法训练营第六十天 | LeetCode 84. 柱状图中最大的矩形
代码随想录算法训练营第六十天 | LeetCode 84. 柱状图中最大的矩形
21 3
|
24天前
|
存储 算法
代码随想录算法训练营第五十九天 | LeetCode 739. 每日温度、496. 下一个更大元素 I
代码随想录算法训练营第五十九天 | LeetCode 739. 每日温度、496. 下一个更大元素 I
22 1
|
24天前
|
算法
代码随想录算法训练营第五十七天 | LeetCode 739. 每日温度、496. 下一个更大元素 I
代码随想录算法训练营第五十七天 | LeetCode 739. 每日温度、496. 下一个更大元素 I
18 3
|
24天前
|
算法
代码随想录算法训练营第五十六天 | LeetCode 647. 回文子串、516. 最长回文子序列、动态规划总结
代码随想录算法训练营第五十六天 | LeetCode 647. 回文子串、516. 最长回文子序列、动态规划总结
34 1
|
24天前
|
算法
代码随想录算法训练营第五十五天 | LeetCode 583. 两个字符串的删除操作、72. 编辑距离、编辑距离总结
代码随想录算法训练营第五十五天 | LeetCode 583. 两个字符串的删除操作、72. 编辑距离、编辑距离总结
24 1
|
26天前
|
算法 API DataX
二叉树(下)+Leetcode每日一题——“数据结构与算法”“对称二叉树”“另一棵树的子树”“二叉树的前中后序遍历”
二叉树(下)+Leetcode每日一题——“数据结构与算法”“对称二叉树”“另一棵树的子树”“二叉树的前中后序遍历”
|
26天前
|
算法 DataX
二叉树(中)+Leetcode每日一题——“数据结构与算法”“剑指Offer55-I. 二叉树的深度”“100.相同的树”“965.单值二叉树”
二叉树(中)+Leetcode每日一题——“数据结构与算法”“剑指Offer55-I. 二叉树的深度”“100.相同的树”“965.单值二叉树”