给出一个含有正整数和负整数的数组,重新排列成一个正负数交错的数组。
TIME COMPLEXITY : O(n)
void rerange(vector &A) { int cnt_pos = 0; for (int i = 0; i < A.size(); ++i) { if (A[i] > 0) { ++cnt_pos; } } bool pos_first = true; if (cnt_pos * 2 < A.size()) { pos_first = false; } int pos_idx = pos_first ? 0 : 1; int neg_idx = pos_first ? 1 : 0; while (pos_idx < A.size() && neg_idx < A.size()) { while (pos_idx < A.size() && A[pos_idx] > 0) { pos_idx += 2; } while (neg_idx < A.size() && A[neg_idx] < 0) { neg_idx += 2; } if (pos_idx < A.size() && neg_idx < A.size()) { swap(A[pos_idx], A[neg_idx]); } }}