LeetCode41 缺失的第一個(gè)正數(shù)

缺失的第一個(gè)正數(shù)

這到題再我之前面試的時(shí)候遇見(jiàn)一個(gè)非常相像的,所以就拿來(lái)記錄一下。

import org.junit.Test;

import java.util.Arrays;

/**
 * 缺失的第一個(gè)正數(shù)
 *
 * @author szw<szw0814 @ 1 6 3 . com> 2020/9/14
 *
 * 給你一個(gè)未排序的整數(shù)數(shù)組,請(qǐng)你找出其中沒(méi)有出現(xiàn)的最小的正整數(shù)。
 * 輸入: [1,2,0]
 * 輸出: 3

 * 輸入: [3,4,-1,1]
 * 輸出: 2
 */
public class findPositiveNumber {

    @Test
    public void test(){
        int[] nums = {1,2,0};
        System.out.println(firstMissingPositive(nums));
    }

    /**
     *一旦數(shù)組中出現(xiàn)小于等于0的數(shù),或者是大于等于n+1的數(shù),那么1-n中就必定有數(shù)字缺失(這里n代表數(shù)組的長(zhǎng)度)
     */
    public int firstMissingPositive(int[] nums) {

        // 計(jì)算數(shù)組長(zhǎng)度
        int n = nums.length;
       Arrays.sort(nums);
       // 需要想到:結(jié)果集中一定是從1開(kāi)始的,如果是小于0的數(shù)不管,從1開(kāi)始做對(duì)比,如果數(shù)組比rs大了。那么確是的數(shù)就找到了
        int rs = 1;
        for (int i = 0; i < n; i++) {
            if (nums[i] > rs){
                break;
            }else if(nums[i] == rs){
                rs++;
            }
        }
        return rs;
    }
}

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容