aboutsummaryrefslogtreecommitdiff
path: root/sort_array_parity.cpp
blob: 33f02b10422a244e0c81aa6e869fa979e2b59969 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
#include "leetcode.h"

class Solution {
public:
  vector<int> sortArrayByParity(vector<int> &nums) {
    /*
     * important to assign vector values first:
     * vector... var(size, vals)
     */
    vector<int> ans(nums.size(), 0);

    /*
     * start at first element (0)
     * end at "last" element minus 1
     * because arrays initialize at 0
     */
    int start = 0, end = nums.size() - 1;

    for (int i = 0; i < nums.size(); i++) {
      if (nums[i] % 2 == 1)
        /*
         * odd
         * assign "last" array value to current nums value
         * and incrementally decrease end when necessary
         */
        ans[end--] = nums[i];
      else
        /*
         * even
         * assign "first" array value to current nums value
         * and incrementally increase start when necessary
         */
        ans[start++] = nums[i];
    }
    return ans;
  }
};

int main() {
  vector<int> nums = {3, 1, 2, 4};
  Solution obj;
  for (int i = 0; i < nums.size(); i++)
    cout << nums[i] << ' ';
  cout << endl;
  obj.sortArrayByParity(nums);
}