33 lines
887 B
Rust
33 lines
887 B
Rust
struct Solution;
|
|
impl Solution {
|
|
pub fn first_missing_positive(mut nums: Vec<i32>) -> i32 {
|
|
for i in 0..nums.len(){
|
|
if nums[i] <= 0 || nums[i] > nums.len() as i32 {
|
|
continue;
|
|
}
|
|
let mut temp = nums[i];
|
|
nums[i] = -1;
|
|
while temp > 0 && temp <= nums.len() as i32 {
|
|
let temp2 = nums[temp as usize - 1];
|
|
nums[temp as usize - 1] = temp;
|
|
if temp == temp2 {
|
|
break;
|
|
}
|
|
temp = temp2;
|
|
}
|
|
}
|
|
println!("{:?}", nums);
|
|
for i in 0..nums.len(){
|
|
if nums[i] != (i as i32 + 1) {
|
|
return i as i32 + 1;
|
|
}
|
|
}
|
|
nums.len() as i32 + 1
|
|
}
|
|
}
|
|
|
|
fn main() {
|
|
let sl = Solution::first_missing_positive(vec![1]);
|
|
println!("{:?}", sl);
|
|
}
|