1. 程式人生 > 其它 >【每日一題】【原地雜湊】2022年1月2日-41. 缺失的第一個正數

【每日一題】【原地雜湊】2022年1月2日-41. 缺失的第一個正數

給你一個未排序的整數陣列 nums ,請你找出其中沒有出現的最小的正整數。

請你實現時間複雜度為 O(n) 並且只使用常數級別額外空間的解決方案。

思路:原地雜湊

class Solution {
    public int firstMissingPositive(int[] nums) {
        int len = nums.length;
        for(int i = 0; i < len; i++) {
            while(nums[i] > 0 && nums[i] <= len && nums[nums[i] - 1] != nums[i]) {
                
//swap(nums, i, nums[i] - 1); //需要後修改nums[i]; int tmp = nums[nums[i] - 1]; nums[nums[i] - 1] = nums[i]; nums[i] = tmp; } } for(int i = 0; i < len; i++) { if(nums[i] != i + 1) { return
i + 1; } } return len + 1; } private void swap(int[] nums, int index1, int index2) { int temp = nums[index1]; nums[index1] = nums[index2]; nums[index2] = temp; } }

本文來自部落格園,作者:劉金輝,轉載請註明原文連結:https://www.cnblogs.com/liujinhui/p/15757572.html