LeetCode演算法41 java缺失的第乙個正數

2021-09-05 11:14:20 字數 1160 閱讀 5273

問題

給定乙個未排序的整數陣列,找出其中沒有出現的最小的正整數。

示例 1:

輸入: [1,2,0]

輸出: 3

示例 2:

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

輸出: 2

示例 3:

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

輸出: 1

說明:你的演算法的時間複雜度應為o(n),並且只能使用常數級別的空間。

思考

有的小夥伴上來說這個題太簡單了,直接進行乙個同樣大小的陣列的儲存,之後將存在資料的對應位置設定為1,尋找第乙個不為1的位置即可。但是關鍵點在於說明中,要求複雜度和空間有限。

因此這就複雜了,但是思路在於,既然要求時間複雜度為o(n),並且空間為常數,那答案就在「遍歷一次」和「交換位置」這兩個策略的結合中。

最後其實答案是遍歷兩次,交換位置,但兩次遍歷疊加仍舊是o(n)的時間複雜度。

演算法說明

將陣列從第乙個位數開始,將其交換到自己應該在的位置上。並且交換一次後,再次進行交換確保當前位置已經是乙個確定不會再移動的資料。之後依次向後推進。

注意對幾種情況的考慮:小於0、等於0、大於陣列邊際

**

public class _41firstmissingpositive

}for(int i=0;i}

//there is nothing to response

return result;

}public static void main(string arg);

int input2 =;

int input3 = ;

system.out.println(firstmissingpositive.firstmissingpositive(input1));

system.out.println(firstmissingpositive.firstmissingpositive(input2));

system.out.println(firstmissingpositive.firstmissingpositive(input3));

}}

資料庫遞迴演算法jav

表結構 欄位1 欄位2 1 02 1 3 14 2 5 26 4 根據父id查詢子id public static arraylist getallsubcateidfromparentcateid string parentid throws exception db.close return l...

Leetcode 232 用棧實現佇列 java

使用棧實現佇列的下列操作 push x 將乙個元素放入佇列的尾部。pop 從佇列首部移除元素。peek 返回佇列首部的元素。empty 返回佇列是否為空。示例 myqueue queue new myqueue queue.push 1 queue.push 2 queue.peek 返回 1 qu...

Leetcode題解1 最長回文子串 JAVA

題目 given a strings,find the longest palindromic substring ins.you may assume that the maximum length ofsis 1000.example 1 input babad output bab note ...