Squares of a Sorted Array Problem & Solution

Given an integer array nums sorted in non-decreasing order, return an array of the squares of each number sorted in non-decreasing order.

See the squares of a sorted array problem on LeetCode.

C++ Solution

#pragma GCC optimize("Ofast")
#pragma GCC optimization("fast-math")
#pragma GCC optimization("unroll-loops")

static const int _=[](){std::ios::sync_with_stdio(false);cin.tie(nullptr);cout.tie(nullptr);return 0;}();

class Solution {
public:
  vector<int> sortedSquares(vector<int>& nums) {
    int p = 0;
    while (p < nums.size() && nums[p] < 0) {
      ++p;
    }

    int n = p - 1;

    vector<int> result;
    while (n >= 0 && p < nums.size()) {
      if (abs(nums[n]) < nums[p]) {
        result.push_back(pow(nums[n], 2));
        --n;
      } else {
        result.push_back(pow(nums[p], 2));
        ++p;
      }
    }

    while (n >= 0) {
      result.push_back(pow(nums[n], 2));
      --n;
    }

    while (p < nums.size()) {
      result.push_back(pow(nums[p], 2));
      ++p;
    }

    return result;
  }
};

Start Here

Many paths, there are. Follow yours, you must.