【每日算法Day 75】字节跳动面试题:手撕困难题,看过我Day 71的人都会做了!

简介: 给定一个未排序的整数数组,找出其中没有出现的最小的正整数。

题目链接


LeetCode 41. 缺失的第一个正数[1]

题目描述

给定一个未排序的整数数组,找出其中没有出现的最小的正整数。

示例1

输入:
[1,2,0]
输出
3

示例2

输入:
[3,4,-1,1]
输出:
2

示例3

输入:
[7,8,9,11,12]
输出:
1

说明:

  • 你的算法的时间复杂度应为image.png ,并且只能使用常数级别的空间。

题解


如果之前一直坚持看我题解的同学,应该前几天刚看过下面这道题:

【每日算法Day 71】面试官想考我这道位运算题,结果我给出了三种解法

韦阳的博客:【每日算法Day 71】面试官想考我这道位运算题,结果我给出了三种解法[2]

知乎专栏:【每日算法Day 71】面试官想考我这道位运算题,结果我给出了三种解法[3]


image.png

代码


c++

classSolution {
public:  
intfirstMissingPositive(vector<int>&nums) { 
intn=nums.size();  
nums.push_back(-1);  
for (inti=0; i<=n; ++i) {  
if (nums[i] <=0||nums[i] >n) {   
nums[i] =-1;  
            }    
        }    
for (inti=0; i<=n; ++i) {   
while (nums[i] !=-1&&i!=nums[i] &&nums[i] !=nums[nums[i]]) {  
swap(nums[i], nums[nums[i]]);    
            }        
if (nums[i] !=-1&&i!=nums[i]) {   
nums[i] =-1;  
            }  
        }     
for (inti=1; i<=n; ++i) {      
if (nums[i] ==-1) returni; 
        }      
returnn+1;    
    }
};

参考资料


[1]

LeetCode 41. 缺失的第一个正数: https://leetcode-cn.com/problems/first-missing-positive/

[2]

韦阳的博客:【每日算法Day 71】面试官想考我这道位运算题,结果我给出了三种解法: https://godweiyang.com/2020/03/16/leetcode-interview-17-19/

[3]

知乎专栏:【每日算法Day 71】面试官想考我这道位运算题,结果我给出了三种解法: https://zhuanlan.zhihu.com/p/113534188

image.png

作者简介:godweiyang知乎同名华东师范大学计算机系硕士在读,方向自然语言处理与深度学习喜欢与人分享技术与知识,期待与你的进一步交流~


相关文章
|
3天前
|
存储 Unix 程序员
面试题:Ctrl + C在不同操作系统下的应用
字节跳动面试题:Ctrl + C在不同操作系统下的应用
43 1
|
3天前
|
负载均衡 算法 应用服务中间件
面试题:Nginx有哪些负载均衡算法?Nginx位于七层网络结构中的哪一层?
字节跳动面试题:Nginx有哪些负载均衡算法?Nginx位于七层网络结构中的哪一层?
49 0
|
8月前
|
分布式计算 Hadoop 大数据
字节跳动面试问到Hadoop源码,拿40K进大厂的Java程序员必备技能
大数据由于数据量庞大、数据类型复杂等特点,特别是非结构化或半结构化数据远远多于结构化数据,导致传统关系型数据库让企业面临巨大的成本压力。而 Hadoop 能够很好的提供解决大数据问题的技术手段。因此,Hadoop 技术在大数据中占据着举足轻重的作用,也很受企业的青睐。
|
1天前
|
JavaScript 前端开发 Java
关于hello world,让我们用五十种编程语言来诠释!,字节跳动研发面试流程
关于hello world,让我们用五十种编程语言来诠释!,字节跳动研发面试流程
|
1天前
|
Oracle 关系型数据库 数据库
Oracle 部署及基础使用,字节跳动资深面试官亲述
Oracle 部署及基础使用,字节跳动资深面试官亲述
|
1天前
|
Android开发
Android Jetpack架构开发组件化应用实战,字节跳动+阿里+华为+腾讯等大厂Android面试题
Android Jetpack架构开发组件化应用实战,字节跳动+阿里+华为+腾讯等大厂Android面试题
|
1天前
|
Android开发
71,字节跳动历年校招Android面试真题解析
71,字节跳动历年校招Android面试真题解析
|
1天前
|
算法 Java C++
刷题两个月,从入门到字节跳动offer丨GitHub标星16k+,美团Java面试题
刷题两个月,从入门到字节跳动offer丨GitHub标星16k+,美团Java面试题
|
2天前
|
设计模式 缓存 前端开发
真的强!借助阿里技术博主分享的Android面试笔记,我拿到了字节跳动的offer
真的强!借助阿里技术博主分享的Android面试笔记,我拿到了字节跳动的offer
|
2天前
|
设计模式 缓存 Dart
Flutter学习笔记&学习资料推荐,15分钟的字节跳动视频面试
Flutter学习笔记&学习资料推荐,15分钟的字节跳动视频面试