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

【力扣hot100题】(016)缺失的第一个正数

题目里这么多条条框框……先不按条条框框做了两下。

第一个思路:你不仁我不义,先排序后遍历(时间不符题意)

class Solution {
public:
    int firstMissingPositive(vector<int>& nums) {
        sort(nums.begin(),nums.end());
        if(nums[0]>1) return 1;
        if(nums[nums.size()-1]<=0) return 1;
        for(int i=1;i<nums.size();i++){
            if(nums[i]>1&&nums[i-1]<=0) return 1;
            if(nums[i-1]>=0&&nums[i]-nums[i-1]>1) return nums[i-1]+1;
        }
        return nums[nums.size()-1]+1;
    }
};

排个序时间复杂度就o(nlogn)了,肯定不符题意,但还是过了。

看了一下之前的代码就是这个思路,而且比这个代码长了不少,看了我还是有进步(点头)

第二个思路:哈希表(空间不符题意)

class Solution {
public:
    int firstMissingPositive(vector<int>& nums) {
        unordered_set<int> st;
        int result=1;
        for(int i=0;i<nums.size();i++) if(nums[i]>0) st.insert(nums[i]);
        for(result;result<st.size()+1;result++) if(st.find(result)==st.end()) return result;
        return result;
    }
};

同样是很简单的思路,如果这题没有限制条件那么就是道简单题了。

第三个思路:答案思路,原地哈希表

class Solution {
public:
    int firstMissingPositive(vector<int>& nums) {
        for(int i=0;i<nums.size();i++){
            while(nums[i]!=i+1&&nums[i]>0&&nums[i]<nums.size()&&nums[nums[i]-1]!=nums[i]){
                swap(nums[i],nums[nums[i]-1]);
            }
        }
        for(int i=0;i<nums.size();i++) if(nums[i]!=i+1) return i+1;
        return nums.size()+1;
    }
};

相当于把第二个思路优化了一下,不额外建立哈希表,而是将原数组当作哈希表,第i个位置存放的是数i+1,不过这个代码时间复杂度是o(n)确实震惊到我了。

感觉比较考验思维。

相关文章:

  • 一键实现:谷歌表单转word(formtoword)
  • springboot jpa Instant
  • Dubbo(22)如何配置Dubbo的服务提供者?
  • 【LeetCode】算法详解#2 ---和为k的子数组
  • 当AI代写作业成为常态:重构智能时代的教育范式
  • 关于JVM和OS中的栈帧的区别和内存浅析
  • mac m1/m2/m3 pyaudio的安装
  • 前端开发学习路线完整指南
  • Mysql-DCL
  • libpng-1.6.47-windows编译
  • IOS奔溃日志分析-克魔ios开发助手实战-以支付宝奔溃日志为例
  • 论工作中的学习
  • 物联网系统集成“教学+实训”实验室解决方案
  • Python定时任务深度剖析:Schedule库的线程与超时应对策略
  • 【django】2-2 (django配置) 数据库配置、缓存配置
  • QT登录注册模块(客户端)
  • Java项目如何打jar包?
  • 算法--递归、搜索与回溯
  • 特征降维
  • WebAssembly,突破前端性能优化的方案
  • html网页制作公司/沈阳seo优化新势力
  • 公司找人做网站/竞价网络推广培训
  • 电脑网站开发/淘宝seo什么意思
  • 织梦网站模板下载/名风seo软件
  • 常平网站开发/赣州seo
  • 做项目挣钱的网站/太原seo