@@ -21,7 +21,7 @@ \subsubsection{代码}
21
21
// 时间复杂度O(m+n),空间复杂度O(1)
22
22
class Solution {
23
23
public:
24
- void merge(int A[] , int m, int B[] , int n) {
24
+ void merge(vector< int>& A , int m, vector< int>& B , int n) {
25
25
int ia = m - 1, ib = n - 1, icur = m + n - 1;
26
26
while(ia >= 0 && ib >= 0) {
27
27
A[icur--] = A[ia] >= B[ib] ? A[ia--] : B[ib--];
@@ -98,6 +98,7 @@ \subsubsection{代码}
98
98
\begin {Code }
99
99
//LeetCode, Merge k Sorted Lists
100
100
// 时间复杂度O(n1+n2+...),空间复杂度O(1)
101
+ // TODO: 会超时
101
102
class Solution {
102
103
public:
103
104
ListNode *mergeKLists(vector<ListNode *> &lists) {
@@ -273,16 +274,17 @@ \subsubsection{代码}
273
274
// 时间复杂度O(n),空间复杂度O(1)
274
275
class Solution {
275
276
public:
276
- int firstMissingPositive(int A[], int n ) {
277
- bucket_sort(A, n );
277
+ int firstMissingPositive(vector< int>& nums ) {
278
+ bucket_sort(nums );
278
279
279
- for (int i = 0; i < n ; ++i)
280
- if (A [i] != (i + 1))
280
+ for (int i = 0; i < nums.size() ; ++i)
281
+ if (nums [i] != (i + 1))
281
282
return i + 1;
282
- return n + 1;
283
+ return nums.size() + 1;
283
284
}
284
285
private:
285
- static void bucket_sort(int A[], int n) {
286
+ static void bucket_sort(vector<int>& A) {
287
+ const int n = A.size();
286
288
for (int i = 0; i < n; i++) {
287
289
while (A[i] != i + 1) {
288
290
if (A[i] <= 0 || A[i] > n || A[i] == A[A[i] - 1])
@@ -337,10 +339,10 @@ \subsubsection{代码1}
337
339
// 时间复杂度O(n),空间复杂度O(1)
338
340
class Solution {
339
341
public:
340
- void sortColors(int A[], int n ) {
342
+ void sortColors(vector< int>& A ) {
341
343
int counts[3] = { 0 }; // 记录每个颜色出现的次数
342
344
343
- for (int i = 0; i < n ; i++)
345
+ for (int i = 0; i < A.size() ; i++)
344
346
counts[A[i]]++;
345
347
346
348
for (int i = 0, index = 0; i < 3; i++)
@@ -358,9 +360,9 @@ \subsubsection{代码2}
358
360
// 双指针,时间复杂度O(n),空间复杂度O(1)
359
361
class Solution {
360
362
public:
361
- void sortColors(int A[], int n ) {
363
+ void sortColors(vector< int>& A ) {
362
364
// 一个是red的index,一个是blue的index,两边往中间走
363
- int red = 0, blue = n - 1;
365
+ int red = 0, blue = A.size() - 1;
364
366
365
367
for (int i = 0; i < blue + 1;) {
366
368
if (A[i] == 0)
@@ -382,9 +384,9 @@ \subsubsection{代码3}
382
384
// 时间复杂度O(n),空间复杂度O(1)
383
385
class Solution {
384
386
public:
385
- void sortColors(int A[], int n ) {
386
- partition(partition(A, A + n , bind1st(equal_to<int>(), 0)), A + n,
387
- bind1st(equal_to<int>(), 1));
387
+ void sortColors(vector< int>& nums ) {
388
+ partition(partition(nums.begin(), nums.end() , bind1st(equal_to<int>(), 0)),
389
+ nums.end(), bind1st(equal_to<int>(), 1));
388
390
}
389
391
};
390
392
\end {Code }
@@ -397,9 +399,9 @@ \subsubsection{代码4}
397
399
// 时间复杂度O(n),空间复杂度O(1)
398
400
class Solution {
399
401
public:
400
- void sortColors(int A[], int n ) {
401
- partition(partition(A, A + n , bind1st(equal_to<int>(), 0)), A + n ,
402
- bind1st(equal_to<int>(), 1));
402
+ void sortColors(vector< int>& nums ) {
403
+ partition(partition(nums.begin(), nums.end() , bind1st(equal_to<int>(), 0)),
404
+ nums.end(), bind1st(equal_to<int>(), 1));
403
405
}
404
406
private:
405
407
template<typename ForwardIterator, typename UnaryPredicate>
0 commit comments