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

只有网站才需要域名吗做网站用什么工具好

只有网站才需要域名吗,做网站用什么工具好,微信支付开发者平台,网站关键词设置多少合适目录 引言缺失的第一个正数初始理解问题方法一分析:排序后遍历方法二分析:辅助数组寻找满足条件的解法代码实现验证例子复杂度分析 🙋‍♂️ 作者:海码007📜 专栏:算法专栏💥 标题:【…

目录

  • 引言
  • 缺失的第一个正数
      • 初始理解问题
      • 方法一分析:排序后遍历
      • 方法二分析:辅助数组
      • 寻找满足条件的解法
      • 代码实现
      • 验证例子
      • 复杂度分析

请添加图片描述

  • 🙋‍♂️ 作者:海码007
  • 📜 专栏:算法专栏
  • 💥 标题:【Hot100】41. 缺失的第一个正数
  • ❣️ 寄语:书到用时方恨少,事非经过不知难!

引言

没想到满足要求的解题方法。
想到了两种方法,一种时间复杂度较高,一种空间复杂度较高。
方法一:对数组进行排序,时间复杂度O(nlogn),然后遍历排序后的数组,跳过负数和0值,然后判断第一个遇到的正值是否是1,如果不是1,则输出1作为结果,如果是1继续往后遍历是否是2 3 4 5 。并输出结果。

方法二:首先遍历一遍数组找出最大值。然后创建一个这个大小的辅助数组,用于记录正数是否出现。如data[i]标识i+1的数值是否出现,通过再遍历一次数组来填充。
填充完后,遍历辅助数组,找出第一个为0值的索引。这个就是结果。

缺失的第一个正数

  • 🎈 题目链接:
  • 🎈 做题状态:

初始理解问题

首先,我们需要明确题目要求:

  1. 未排序的整数数组 nums:数组中的数字是任意排列的,可能有正数、负数或零。
  2. 找出没有出现的最小的正整数:即从1开始,第一个不在数组中的正整数。
  3. 时间复杂度 O(n):意味着我们需要在线性时间内解决问题,不能有嵌套循环等导致更高时间复杂度的操作。
  4. 常数级别的额外空间:即我们不能使用与输入规模相关的额外空间,例如不能使用另一个与nums大小相同的数组。

方法一分析:排序后遍历

思路

  1. 对数组进行排序(O(n log n))。
  2. 遍历排序后的数组,跳过非正数。
  3. 从1开始检查,找到第一个缺失的正整数。

问题

  • 排序的时间复杂度是O(n log n),不满足题目要求的O(n)。
  • 空间复杂度取决于排序算法,如果是原地排序(如堆排序),可以是O(1),但时间不满足。

结论
不满足时间复杂度要求。

方法二分析:辅助数组

思路

  1. 遍历数组找到最大值max。
  2. 创建一个大小为max的辅助数组(或哈希表),初始化为0。
  3. 再次遍历原数组,对于每个正数,标记辅助数组对应位置为1。
  4. 遍历辅助数组,找到第一个为0的位置,即缺失的最小正整数。

问题

  • 如果数组中的最大值非常大(如1, 2, 1000000),辅助数组的大小会非常大,空间复杂度为O(max),不是常数空间。
  • 如果数组中所有数都是负数或零,辅助数组大小为0,但缺失的最小正整数是1。

结论
不满足空间复杂度要求。

寻找满足条件的解法

我们需要一个时间复杂度O(n)且空间复杂度O(1)的算法。考虑到数组本身可以用于存储信息,可以尝试“原地哈希”或“索引标记”的方法。

关键观察

  • 缺失的最小正整数一定在1到n+1之间(n为数组长度)。因为如果数组包含了1到n的所有数字,那么缺失的是n+1;否则缺失的数字在1到n之间。
  • 因此,我们可以忽略所有大于n的数字和负数,因为它们不影响1到n的缺失判断。

算法步骤

  1. 第一次遍历:将所有非正数(<=0)和大于n的数替换为n+1。这样数组中所有数字都是正数且在“有效范围”内(1到n+1)。
  2. 第二次遍历:对于每个数字的绝对值num,如果num <= n,将nums[num - 1]标记为负数(表示数字num存在)。这里用索引0表示1,索引1表示2,以此类推。
  3. 第三次遍历:遍历数组,找到第一个正数的位置i,表示i+1这个数字缺失。如果所有位置都是负数,则缺失的是n+1。

例子
nums = [3, 4, -1, 1]

  1. 替换非正数和大于n的数:n=4,将-1替换为5 -> [3, 4, 5, 1]
  2. 标记:
    • num=3 -> nums[2]=5 -> 取绝对值后还是5 >4,不标记。
    • num=4 -> nums[3]=1 -> 取绝对值后1 <=4,nums[3] = -1。
    • num=5 -> 不标记。
    • num=1 -> nums[0]=3 -> nums[0] = -3。
      现在数组:[-3, 4, 5, -1]
  3. 找到第一个正数:nums[1]=4 >0,所以缺失的是i+1=2。

代码实现


int firstMissingPositive(vector<int>& nums) {int n = nums.size();// Step 1: Replace all non-positive and numbers > n with n+1for (int i = 0; i < n; ++i) {if (nums[i] <= 0 || nums[i] > n) {nums[i] = n + 1;}}// Step 2: Use index marking to indicate presence of numbersfor (int i = 0; i < n; ++i) {int num = abs(nums[i]);if (num <= n) {nums[num - 1] = -abs(nums[num - 1]);}}// Step 3: Find the first positive indexfor (int i = 0; i < n; ++i) {if (nums[i] > 0) {return i + 1;}}// If all numbers from 1 to n are present, return n+1return n + 1;
}

验证例子

nums = [3, 4, -1, 1]

  1. 替换后:[3, 4, 5, 1]
  2. 标记:
    • num=3 -> nums[2]=5 -> 不标记。
    • num=4 -> nums[3]=1 -> nums[3] = -1。
    • num=5 -> 不标记。
    • num=1 -> nums[0]=3 -> nums[0] = -3。
      数组:[-3, 4, 5, -1]
  3. 第一个正数:nums[1]=4 -> 返回2。

复杂度分析

  • 时间复杂度:三次遍历,每次O(n),总计O(n)。
  • 空间复杂度:只使用了常数额外空间(几个变量),没有使用与n相关的额外数据结构。

文章转载自:

http://vOIxXHEL.LqkLf.cn
http://mdKKTjs3.LqkLf.cn
http://pjcqfxmS.LqkLf.cn
http://pavEeFfM.LqkLf.cn
http://N1nkvVZy.LqkLf.cn
http://Hn7fv8nj.LqkLf.cn
http://OZbj8U2T.LqkLf.cn
http://wBNMft9P.LqkLf.cn
http://ZFk9l3mx.LqkLf.cn
http://brdLDPxf.LqkLf.cn
http://UlMlGy03.LqkLf.cn
http://KKEdpbhJ.LqkLf.cn
http://eneKyRQm.LqkLf.cn
http://rHtmSpL3.LqkLf.cn
http://ZEXkpTY3.LqkLf.cn
http://xWsa7XFy.LqkLf.cn
http://OENthqiY.LqkLf.cn
http://q8O2s4tC.LqkLf.cn
http://DL2kqnyG.LqkLf.cn
http://X4F7AgsT.LqkLf.cn
http://3Dy2NoeC.LqkLf.cn
http://yvqTh9og.LqkLf.cn
http://KmOkZ2Jt.LqkLf.cn
http://x8Jxxzi4.LqkLf.cn
http://jvNjXxV6.LqkLf.cn
http://bfs4qufU.LqkLf.cn
http://3cUpGhV9.LqkLf.cn
http://LRN4ROny.LqkLf.cn
http://odluaaC4.LqkLf.cn
http://mf7LQZJo.LqkLf.cn
http://www.dtcms.com/wzjs/716603.html

相关文章:

  • 建网站需要什么手需自学开发一个游戏app
  • 网站建设毕业设计总结网站模板 整站源码
  • 深圳建设局官网站电子商务毕业设计 网站建设
  • 外贸网站建设信息搜索引擎营销的实现方法
  • 企业网站系统官网wordpress页面权限
  • 网站机房建设成本少儿编程加盟十大机构
  • 页游开发企业网站优化公司
  • 怀化网站建设网站科技网络公司名字
  • 建设网站的傻瓜图文指南网站建设服务费怎么做会计分录
  • 服装毕业设计代做网站游学做的好的网站
  • 怎么建立自己的公司网站影楼做网站
  • 电子商务网站开发设计报告书宾果 wordpress
  • 有哪些网站可以做印度市场调研网站做效果图流程
  • 山东莱州市建设局网站wordpress3.5.2下载
  • 长沙网站制作有哪些公司wordpress 发货
  • 建设一个企业网站微信推广网站
  • 制作灯笼作文seo的基本步骤是什么
  • 如何整合网站中国十大it培训机构排名
  • 千里马招标网站网站开发亿玛酷适合5
  • 雅安建设局网站哪些网站可以免费申请
  • 课桌公司网站建设免费的视频api接口
  • 如何在网站上做标注电子商务网站的建站流程
  • 洛阳网站建设的公司2013网站怎么备案
  • 个人网站备案做论坛青海省交通建设管理局网站
  • 临沂地区建站网站wordpress 自动换行
  • 民制作网站哪家便宜wordpress如何制作主题
  • 嘉兴建网站雷州网站建设公司
  • 网站上传空间的ip地址吗注册劳务公司需要多少钱
  • 学做面包到什么网站wordpress图片存储方案
  • 塘厦基础网站建设东莞医院网站建设