?LeetCode刷題實(shí)戰(zhàn)41:缺失的第一個(gè)正數(shù)
算法的重要性,我就不多說了吧,想去大廠,就必須要經(jīng)過基礎(chǔ)知識和業(yè)務(wù)邏輯面試+算法面試。所以,為了提高大家的算法能力,這個(gè)公眾號后續(xù)每天帶大家做一道算法題,題目就從LeetCode上面選 !
今天和大家聊的問題叫做?缺失的第一個(gè)正數(shù),我們先來看題面:
https://leetcode-cn.com/problems/first-missing-positive/
Given an unsorted integer array, find the smallest missing?positive integer.
題意
樣例
示例?1:
輸入: [1,2,0]
輸出: 3
示例?2:
輸入: [3,4,-1,1]
輸出: 2
示例?3:
輸入: [7,8,9,11,12]
輸出: 1
題解
class?Solution?{
????????public?int?firstMissingPositive(int[] nums)?{
????????????for(int?i=0;i????????????????if(nums[i]>0&&nums[i]<=nums.length&&nums[i]!=nums[nums[i]-1]){
????????????????????//確定nums[i]的值對應(yīng)的下標(biāo)不越界,同時(shí)排除num[i]本身位置正確或者nums[i]應(yīng)該放入的位置nums[i]-1原本就是nums[i](如[1,1])
????????????????????int?index = nums[i];//
????????????????????nums[i] = nums[index -1];
????????????????????nums[index -1]=index;
????????????????????//換位置之后需要繼續(xù)判斷換過來的值是否在對的位置上,因此不能i++;
????????????????}else{
????????????????????i++;
????????????????}
????????????}
????????????for(int?i=0;i????????????????if(nums[i]!=i+1){
????????????????????return?i+1;
????????????????}
????????????}
????????????return?nums.length+1;
????????}
????}
上期推文:
