1. 程式人生 > 實用技巧 >Vue2020 - 1 - 指令,資料繫結,事件修飾符,按鍵修飾符,自定義修飾符,事件繫結,分支結構,迴圈結構,選項卡案例

Vue2020 - 1 - 指令,資料繫結,事件修飾符,按鍵修飾符,自定義修飾符,事件繫結,分支結構,迴圈結構,選項卡案例

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

示例1:

輸入: [1,2,0]
輸出: 3

示例2:

輸入: [3,4,-1,1]
輸出: 2

示例3:

輸入: [7,8,9,11,12]
輸出: 1

思路:

//把小於nums.length的值放到與下標對應,結束後 ,有以下幾種情況:

//1.從下標1開始位移,遇到第一個不同的下標與值不同的元素,即為要求元素;

//2.走到底,說明正數1-nums.lemgth-1都存在,此時判斷nums[0]是否為nums.lemgth,是則答案為nums.lemgth+1,不是則為nums.lemgth

程式碼:

classSolution{ publicintfirstMissingPositive(int[]nums){ //特殊情況特殊處理 if(nums.length==0||nums==null){return1;} if(nums.length==1){ if(nums[0]<=0){return1;} if(nums[0]==1){return2;} else{return1;} } for(inti=0;i<nums.length;){ if(nums[i]<nums.length&&nums[i]>=0){ if( nums[i]!=i&&nums[i]!=nums[nums[i]] ){swap(nums,i,nums[i]);continue; }//把下標和值相匹配同時考慮元素存在重複情況,當下標與值不匹配,但值所在的下標與這個下標內的值匹配不用交換位置 } i++; } for(inti=1;i<nums.length;i++){ if(nums[i]!=i){returni;}//迴圈一次,下標與值不同的第一個元素就是缺失的數字 } if(nums[0]==nums.length){returnnums.length+1;} //迴圈退出,考慮下標0內元素 returnnums.length; }

publicstaticvoidswap(int[]nums,inti,intj){ inttemp=nums[i]; nums[i]=nums[j]; nums[j]=temp; } }