本文主要是介绍[leetcode刷题系列]First Missing Positive,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
好吧,智商是硬伤。 我承认题目要求的O(n)复杂度和常量空间,我没想到算法。于是就Google了下。
这种思路确实第一次见。长见识了。
class Solution {
public:int firstMissingPositive(int A[], int n) {// Start typing your C/C++ solution below// DO NOT write int main() functionfor(int i = 0; i < n; ++ i){int now = i;while(now >= 0 && now < n){if(A[now] - 1 == now)break;int target = A[now] - 1;if(target < 0 || target >= n || A[now] == A[target])break;swap(A[target], A[now]);}}for(int i = 0; i < n; ++ i)if(A[i] != i + 1)return i + 1;return n + 1;}
};
这篇关于[leetcode刷题系列]First Missing Positive的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!