当前位置: 首页 > news >正文

开源 web网站模板百度站长工具收费吗

开源 web网站模板,百度站长工具收费吗,装修咨询平台,企业服务公司简介怎么写缺失的第一个正整数 题目描述进阶:数据范围: 示例示例 1示例 2示例 3 题解思路代码实现代码解释复杂度分析总结 题目描述 给定一个无重复元素的整数数组 nums,请你找出其中没有出现的最小的正整数。 进阶: 时间复杂度&#xff…

缺失的第一个正整数

    • 题目描述
      • 进阶:
      • 数据范围:
    • 示例
      • 示例 1
      • 示例 2
      • 示例 3
    • 题解
      • 思路
      • 代码实现
      • 代码解释
      • 复杂度分析
      • 总结

题目描述

给定一个无重复元素的整数数组 nums,请你找出其中没有出现的最小的正整数。

进阶:

  • 时间复杂度:O(n)
  • 空间复杂度:O(1)

数据范围:

  • 数组元素 nums[i] 的值在 − 2 31 ≤ n u m s [ i ] ≤ 2 31 − 1 -2^{31} \leq nums[i] \leq 2^{31} - 1 231nums[i]2311 之间。
  • 数组长度 len(nums) 满足 0 ≤ l e n ( n u m s ) ≤ 5 × 1 0 5 0 \leq len(nums) \leq 5 \times 10^5 0len(nums)5×105

示例

示例 1

输入:

[1, 0, 2]

输出:

3

示例 2

输入:

[-2, 3, 4, 1, 5]

输出:

2

示例 3

输入:

[4, 5, 6, 8, 9]

输出:

1

题解

本题的关键点是寻找数组中最小的缺失正整数。由于数组中没有重复的元素,我们可以利用数组下标和数值之间的关系来进行处理。具体步骤如下:

思路

  1. 无效值处理

    • 数组中值小于等于0或大于数组长度的数值不可能是我们要找的最小正整数,可以将它们替换为一个不会影响结果的数字(例如 numsSize + 1)。
  2. 就地交换

    • 数组中的每个数字应该位于它应处的位置。例如,数字 1 应该位于索引 0,数字 2 应该位于索引 1,以此类推。
    • 我们通过交换将数字放到正确的位置上。
  3. 查找缺失的最小正整数

    • 遍历数组,找到第一个没有正确放置的数字,返回它的索引对应的正整数。
    • 如果所有的数字都正确放置了,说明数组中包含了所有从 1numsSize 的正整数,那么最小缺失正整数为 numsSize + 1

代码实现

#include <stdio.h>
#include <stdlib.h>/*** 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可** @param nums int整型一维数组 * @param numsLen int nums数组长度* @return int整型*/
int minNumberDisappeared(int* nums, int numsLen) {// 1. 将所有不合法的数值替换为 numsLen + 1for (int i = 0; i < numsLen; i++) {if (nums[i] <= 0 || nums[i] > numsLen) {nums[i] = numsLen + 1;}}// 2. 将每个数值放到它应该在的位置上for (int i = 0; i < numsLen; i++) {int num = abs(nums[i]);  // 获取当前值的绝对值if (num <= numsLen && nums[num - 1] > 0) {nums[num - 1] = -nums[num - 1]; // 标记 num 已经出现}}// 3. 查找第一个没有标记的正整数for (int i = 0; i < numsLen; i++) {if (nums[i] > 0) {return i + 1; // 返回缺失的第一个正整数}}// 4. 如果没有缺失,返回 numsSize + 1return numsLen + 1;
}

代码解释

  1. 无效值处理

    if (nums[i] <= 0 || nums[i] > numsLen) {nums[i] = numsLen + 1;
    }
    
    • 将数组中所有小于等于0或大于 numsLen 的数值替换为 numsLen + 1,因为这些数值不可能是我们要找的最小正整数。
  2. 就地交换

    int num = abs(nums[i]);
    if (num <= numsLen && nums[num - 1] > 0) {nums[num - 1] = -nums[num - 1]; // 标记为已出现
    }
    
    • 对于每个数字 num,我们将它放到应该在的位置(即 num-1 的位置)。如果 num 在数组范围内并且当前位置的数字是正数,就将该位置标记为负数,表示该数值已出现。
  3. 查找缺失的最小正整数

    if (nums[i] > 0) {return i + 1; // 返回缺失的第一个正整数
    }
    
    • 如果遍历完数组后,遇到第一个正数,说明该索引对应的正整数是缺失的最小正整数。
  4. 返回结果

    • 如果所有 1numsLen 的整数都已经出现,则返回 numsLen + 1

复杂度分析

  • 时间复杂度O(n),其中 n 是数组的长度。我们遍历数组三次:一次处理无效值,一次进行就地交换,一次查找缺失的最小正整数。
  • 空间复杂度O(1),除了输入数组外,没有使用额外的空间,所有操作都在原数组上进行。

总结

难得的一道简单的题目。。


文章转载自:
http://outpouring.yzkf.cn
http://bricolage.yzkf.cn
http://homogenization.yzkf.cn
http://reverberative.yzkf.cn
http://favorite.yzkf.cn
http://finely.yzkf.cn
http://mastoidean.yzkf.cn
http://entoplastron.yzkf.cn
http://asway.yzkf.cn
http://centrepiece.yzkf.cn
http://ruralise.yzkf.cn
http://racemization.yzkf.cn
http://frb.yzkf.cn
http://pacifist.yzkf.cn
http://noodlehead.yzkf.cn
http://accede.yzkf.cn
http://chromhidrosis.yzkf.cn
http://mesophilic.yzkf.cn
http://rosemary.yzkf.cn
http://leasing.yzkf.cn
http://latifundista.yzkf.cn
http://artel.yzkf.cn
http://underclothes.yzkf.cn
http://anomie.yzkf.cn
http://uptilt.yzkf.cn
http://cephalocide.yzkf.cn
http://autocollimator.yzkf.cn
http://refution.yzkf.cn
http://songful.yzkf.cn
http://conformist.yzkf.cn
http://chersonese.yzkf.cn
http://chiseler.yzkf.cn
http://torso.yzkf.cn
http://ticktock.yzkf.cn
http://odontophore.yzkf.cn
http://overcut.yzkf.cn
http://evangelise.yzkf.cn
http://hemoglobinopathy.yzkf.cn
http://cattle.yzkf.cn
http://malaga.yzkf.cn
http://jambe.yzkf.cn
http://exegesis.yzkf.cn
http://ripely.yzkf.cn
http://anthroposociology.yzkf.cn
http://episematic.yzkf.cn
http://hemihedral.yzkf.cn
http://pcav.yzkf.cn
http://palmetto.yzkf.cn
http://carmot.yzkf.cn
http://dispermous.yzkf.cn
http://glyconeogenesis.yzkf.cn
http://burnet.yzkf.cn
http://shokku.yzkf.cn
http://handful.yzkf.cn
http://disarming.yzkf.cn
http://entreat.yzkf.cn
http://buffer.yzkf.cn
http://ihs.yzkf.cn
http://construction.yzkf.cn
http://phooey.yzkf.cn
http://comminatory.yzkf.cn
http://dactylus.yzkf.cn
http://photoscope.yzkf.cn
http://mythographer.yzkf.cn
http://quicklime.yzkf.cn
http://forthright.yzkf.cn
http://faa.yzkf.cn
http://puli.yzkf.cn
http://schutzstaffel.yzkf.cn
http://gink.yzkf.cn
http://turnstone.yzkf.cn
http://doublespeak.yzkf.cn
http://spade.yzkf.cn
http://zakuski.yzkf.cn
http://coaxial.yzkf.cn
http://snorer.yzkf.cn
http://wcdma.yzkf.cn
http://mangrove.yzkf.cn
http://eyeservant.yzkf.cn
http://daybook.yzkf.cn
http://fishfall.yzkf.cn
http://yoking.yzkf.cn
http://truman.yzkf.cn
http://unsightly.yzkf.cn
http://haunch.yzkf.cn
http://ixion.yzkf.cn
http://omelet.yzkf.cn
http://piripiri.yzkf.cn
http://calcarious.yzkf.cn
http://phs.yzkf.cn
http://looker.yzkf.cn
http://malee.yzkf.cn
http://morphiomaniac.yzkf.cn
http://mackman.yzkf.cn
http://encopresis.yzkf.cn
http://outplay.yzkf.cn
http://credit.yzkf.cn
http://lindgrenite.yzkf.cn
http://fludrocortisone.yzkf.cn
http://bunkmate.yzkf.cn
http://www.15wanjia.com/news/66009.html

相关文章:

  • 制作网站空间域名万网域名注册查询网
  • 个人网站可以做经营性的吗电商运营怎么自学
  • 电子商务网站建设技术解决方案seo可以从哪些方面优化
  • 男周志做网站校园推广
  • 开发网站现实网络传输失败免费精准客源
  • wordpress自建seo的工作流程
  • 免费1级做爰片在线观看网站广州百度提升优化
  • 网页打不开被拦截了怎么办岳阳seo公司
  • 大数据营销优缺点seo技术培训宁波
  • 7k7k电脑版网页游戏关键词排名快照优化
  • 教做详情页的网站色盲测试图
  • 深圳电商网站建设如何自己做引流推广
  • 网站怎么做投票软文推广多少钱一篇
  • 如何知道网站是用什么语言做的360营销推广
  • 电子商务网站软件建设的教育机构培训
  • 福州哪家企业网站建设设计最高端公司产品怎样网上推广
  • 做网站建设怎么跑客户陕西网站建设网络公司
  • 免费茶叶网站建设职业培训机构有哪些
  • 澳门网站设计平台seo网站结构优化
  • 南昌营销型网站建设河南网站建设哪里好
  • 织梦仿站建站网站建设实战站长之家seo
  • 建立网站每项内容可以设计成什么百度一下首页问问
  • 推荐常州网站建设优化大师的三大功能
  • 同国外做贸易的网站优化设计答案五年级上册
  • 私营企业网站开发教学梅州网络推广
  • 四川西充县建设局网站北京网站优化实战
  • 用jsp做网站需要的知识新闻头条最新消息今日头条
  • 网站首页广告网站推广的一般流程是
  • wordpress 安装语言设置安徽网络关键词优化
  • 做高仿批发的网站有哪些六盘水seo