Leetcode: 645.错误的集合 题解【超详细】

这篇具有很好参考价值的文章主要介绍了Leetcode: 645.错误的集合 题解【超详细】。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

题目

集合 s 包含从 1 到 n 的整数。不幸的是,因为数据错误,导致集合里面某一个数字复制了成了集合里面的另外一个数字的值,导致集合 丢失了一个数字 并且 有一个数字重复 。

给定一个数组 nums 代表了集合 S 发生错误后的结果。

请你找出重复出现的整数,再找到丢失的整数,将它们以数组的形式返回。

难道: 简单

题目

链接:645. 错误的集合

示例 1:

输入:nums = [1,2,2,4]
输出:[2,3]

示例 2:

输入:nums = [1,1]
输出:[1,2]

提示:

  • 2 <= nums.length <= 104
  • 1 <= nums[i] <= 104

题目解析

根据题目我们可以知道 集合s [1,n]  里面是 有一个元素是重复的,有一个元素是缺失的,题目是要求我们返回数组的(即一个重复的元素,一个缺失的元素)。我们可以先求出重复的元素,再去求出缺失的元素。这个样子求解就比较简单。

代码展示

int* findErrorNums(int* nums, int numsSize, int* returnSize) {
    int* arr = (int*)malloc(sizeof(int) * 2);
    int i = 0; int j = 0;
    //找出复的数组元素
    for (i = 0; i < numsSize; i++)
    {
        for (j = i + 1; j < numsSize; j++)
        {
            if (nums[i] == nums[j])
            {
                arr[0] = nums[i];
            }
        }
    }
    //找出丢失的元素
    int arr2[10001] = { 0 };//创建临时数组
    //元素置零
    for (i = 0; i < numsSize; i++)
    {
        arr2[i] = 0;
    }
    int x = 0;
    for (i = 0; i < numsSize; i++)
    {
        x = nums[i] % (numsSize + 1);
        arr2[x - 1] = x;
    }
    j = 0;
    for (i = 1; i <= numsSize; i++)
    {
        if (arr2[i - 1] == 0)//遍历临时数组
        {
            arr[1] = i;
        }
    }
    *returnSize = 2;
    return arr;
}

 题目超详细解析

1.求出重复的元素

这里用的就是两层for循环,外层循环遍历的是第一个元素,内层循环的初始条件就是第二个元素

这是我们的思路就是 从第一个元素,进行与第二个元素、第三个元素进行比较;然后再让下一个元素与 下面的其他元素进行比较(直到找到重复的元素为止)

图解

Leetcode: 645.错误的集合 题解【超详细】,【leetcode】题解,leetcode,算法,数据结构

2. 求出缺失元素 

 在这里求的缺失的元素是,简单思路就是 可以用一个临时数组(数组中的全部元素置0)来 把[ 1, n ] 这些数组元素存放到相应的数组中(就是与相应的数组下标与之对应)【例如】 元素 1 ,存放到临时数组 下标 1 中;元素 5 ,放到临时数组下标 5 中。

然后在 numsSize大小的数组中进行遍历 其中那个元素为零(因为只有1个元素是缺失的)就是缺失的数组。

这里如果上述文字表示很理解可以去看 

Leetcode:【448. 找到所有数组中消失的数字】题解

图解

Leetcode: 645.错误的集合 题解【超详细】,【leetcode】题解,leetcode,算法,数据结构

Leetcode: 645.错误的集合 题解【超详细】,【leetcode】题解,leetcode,算法,数据结构文章来源地址https://www.toymoban.com/news/detail-724316.html

到了这里,关于Leetcode: 645.错误的集合 题解【超详细】的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【LeetCode】数据结构题解(13)[设计循环链表]

    所属专栏:玩转数据结构题型❤️ 🚀 博主首页:初阳785❤️ 🚀 代码托管:chuyang785❤️ 🚀 感谢大家的支持,您的点赞和关注是对我最大的支持!!!❤️ 🚀 博主也会更加的努力,创作出更优质的博文!!❤️ 🚀 关注我,关注我,关注我,重要的事情说三遍!!!!!

    2024年02月13日
    浏览(42)
  • 【LeetCode】数据结构题解(12)[用栈实现队列]

    所属专栏:玩转数据结构题型❤️ 🚀 博主首页:初阳785❤️ 🚀 代码托管:chuyang785❤️ 🚀 感谢大家的支持,您的点赞和关注是对我最大的支持!!!❤️ 🚀 博主也会更加的努力,创作出更优质的博文!!❤️ 🚀 关注我,关注我,关注我,重要的事情说三遍!!!!!

    2024年02月13日
    浏览(30)
  • 【LeetCode】数据结构题解(11)[用队列实现栈]

    所属专栏:玩转数据结构题型❤️ 🚀 博主首页:初阳785❤️ 🚀 代码托管:chuyang785❤️ 🚀 感谢大家的支持,您的点赞和关注是对我最大的支持!!!❤️ 🚀 博主也会更加的努力,创作出更优质的博文!!❤️ 🚀 关注我,关注我,关注我,重要的事情说三遍!!!!!

    2024年02月13日
    浏览(26)
  • 【LeetCode】数据结构题解(9)[复制带随机指针的链表]

    所属专栏:玩转数据结构题型❤️ 🚀 博主首页:初阳785❤️ 🚀 代码托管:chuyang785❤️ 🚀 感谢大家的支持,您的点赞和关注是对我最大的支持!!!❤️ 🚀 博主也会更加的努力,创作出更优质的博文!!❤️ 🚀 关注我,关注我,关注我,重要的事情说三遍!!!!!

    2024年02月11日
    浏览(39)
  • Leetcode: 1. 两数之和 【题解超详细】

    前言 有人夜里挑灯看花,有人相爱,有人夜里开车看海,有人leetcode第一题都做不出来。 希望下面的题解可以帮助你们 开始  你们的 leetcode 刷题 的 天降之路  题目 给定一个整数数组  nums  和一个整数目标值  target ,请你在该数组中找出  和为目标值  target   的那  两个

    2024年02月10日
    浏览(23)
  • Leetcode:349. 两个数组的交集【题解超详细】

    题目 给定两个数组  nums1  和  nums2  ,返回  它们的交集  。输出结果中的每个元素一定是  唯一  的。我们可以  不考虑输出结果的顺序  。 难度: 简单 题目链接:349.两个数组的交集 示例 1: 示例 2: 提示: 1 = nums1.length, nums2.length = 1000 0 = nums1[i], nums2[i] = 1000 思路解析

    2024年02月09日
    浏览(25)
  • 【LeetCode算法系列题解】第26~30题

    【题目描述】 给你一个 升序排列 的数组 nums ,请你 原地 删除重复出现的元素,使每个元素 只出现一次 ,返回删除后数组的新长度。元素的 相对顺序 应该保持 一致 。然后返回 nums 中唯一元素的个数。 考虑 nums 的唯一元素的数量为 k ,你需要做以下事情确保你的题解可以

    2024年02月10日
    浏览(31)
  • Leetcode题解-算法-动态规划(python版)

    1.1 爬楼梯 70. 爬楼梯(Easy) 走n阶楼梯的方法有两种,1、先走 1 级台阶,再走 n-1 级台阶;2、先走 2 级台阶,再走 n-2 级台阶 f(n) = f(n-1) + f(n-2) 1.2 强盗抢劫 198. 打家劫舍(Medium) 每个房间财产为 nums[0]……nums[n-1]。 假设 0 至 x 间房获得的最大财产为 f(x)。 f(x) = max(f(x-1),f(x-2)+nums[

    2024年02月03日
    浏览(39)
  • 【LeetCode算法系列题解】第61~65题

    【题目描述】 给你一个链表的头节点 head ,旋转链表,将链表每个节点向右移动 k 个位置。 【示例1】 【示例2】 【提示】 链表中节点的数目在范围 [0, 500] 内 − 100 ≤ N o d e . v a l ≤ 100 -100le Node.valle 100 − 100 ≤ N o d e . v a l ≤ 100 0 ≤ k ≤ 2 ∗ 1 0 9 0le kle 2 * 10^9 0 ≤ k ≤

    2024年02月09日
    浏览(26)
  • 【LeetCode算法系列题解】第36~40题

    【题目描述】 请你判断一个 9 x 9 的数独是否有效。只需要 根据以下规则 ,验证已经填入的数字是否有效即可。 数字 1-9 在每一行只能出现一次。 数字 1-9 在每一列只能出现一次。 数字 1-9 在每一个以粗实线分隔的 3x3 宫内只能出现一次(请参考示例图)。 注意: 一个有效

    2024年02月10日
    浏览(34)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包