boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
JobHunting版 - 有人同看First Missing Positive 吗?
相关主题
find the first missing positive number
同学们, 看看这几行code有区别吗>
昨天面试的一道题,find k missing numbers
问到算法题和一道c++题
这题有最优解法么
First Missing Positive on Leetcode
java 基本问题
求解释丽寇儿的新题maximum gap题目到底啥意思?
一道M$算法题。
问一个经典题目
相关话题的讨论汇总
话题: int话题: max话题: num话题: return话题: min
进入JobHunting版参与讨论
1 (共1页)
a***e
发帖数: 413
1
Given an unsorted integer array, find the first missing positive integer.
For example,
Given [1,2,0] return 3,
and [3,4,-1,1] return 2.
Your algorithm should run in O(n) time and uses constant space.
我自己想的答案通过了OJ,但用的那个vector p(max+1,0);是不是会被说不是
constant space?其实我第一个想法就是最多是一个 INT_MAX大小的数组,不也是
constant space么?
class Solution {
public:
int firstMissingPositive(int A[], int n) {
int min = INT_MAX, max = INT_MIN;

for (int i=0; i {
if (A[i] if (A[i]>max) max=A[i];
}
if (min==0&&max==0) return 1;
if (min>1) return 1;
if (max<-1) return -1;
vector p(max+1,0);
for (int i=0; i {
if (A[i]>0)
p[A[i]]++;
}

for (int i=1; i {
if (p[i]==0)
return i;
}

return max+1;
}
};
但似乎别人的答案是下面zhege
class Solution {
public:
int firstMissingPositive(int A[], int n) {
for (int i = 0; i < n; ++i)
{
int num = A[i];
while (num <= n && num > 0 && A[num - 1] != num)
{
swap(A[num - 1], A[i]);
num = A[i];
}
}
for (int i = 0; i < n; ++i)
{
if (A[i] != i + 1)
{
return i + 1;
}
}
return n + 1;
}
};
F*****o
发帖数: 32
2
你的solution应该不是constant space.因为你额外数组的大小是基于最大数的大小。
In this case: A=[1,2,3,4,...,n],it is O(n).
所谓的constant space,是指无论input是什么样子的数组,你的space是constant。
所以,本题要在原数组中做文章。
a***e
发帖数: 413
3
非常感谢!
1 (共1页)
进入JobHunting版参与讨论
相关主题
问一个经典题目
面试题 finding missing value
onsite完,攒rp系列(二)
问两道bloomberg的题目
请问如何安全地reverse 一个integer
str2int中overflow该如何处理?
经典题atoi的溢出处理
问个简单C reverse int
问个《编程实践》(英文版)里面的问题
问个越界的问题
相关话题的讨论汇总
话题: int话题: max话题: num话题: return话题: min