977. Squares of a Sorted Array
2022. 8. 21. 16:13ㆍSTUDY/LeetCode
반응형
Given an integer array nums sorted in non-decreasing order, return an array of the squares of each number sorted in non-decreasing order.
Example 1:
Input: nums = [-4,-1,0,3,10]
Output: [0,1,9,16,100]
Explanation: After squaring, the array becomes [16,1,0,9,100].
After sorting, it becomes [0,1,9,16,100].
Example 2:
Input: nums = [-7,-3,2,3,11]
Output: [4,9,9,49,121]
Constraints:
- 1 <= nums.length <= 104
- -104 <= nums[i] <= 104
- nums is sorted in non-decreasing order.
Follow up: Squaring each element and sorting the new array is very trivial, could you find an O(n) solution using a different approach?
# 풀이
난 그냥 단순히 제곱근 구하기, 절대값 구하는 함수를 써서 풀었긴 했다. 근데 이건 Two Pointer 테마니까 ....
> 내 풀이 (100ms ......)
1
2
3
4
5
6
7
8
9
10
11
12
|
class Solution {
public:
vector<int> sortedSquares(vector<int>& nums) {
for(int i=0;i<nums.size(); i++) {
nums[i] = pow(nums[i], 2);
}
//for(int i : nums) cout << i << ' ';
sort(nums.begin(), nums.end());
return nums;
}
};
|
cs |
> Two Pointer 풀이 (26 ms)
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
|
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
vector<int> nums = {-4,-2,0,1,3};
vector<int> sortedSquares(vector<int>& nums) {
int n = nums.size();
int l = 0;
int r = n-1;
vector<int> res(n);
int pos = n-1;
while(l <= r) {
if(abs(nums[l]) < abs(nums[r])) {
res[pos--] = pow(nums[r],2);
r--;
} else {
res[pos--] = pow(nums[l],2);
l++;
}
}
return res;
}
int main()
{
nums = sortedSquares(nums);
for(int i : nums) cout << i << ' ';
return 0;
}
|
cs |
728x90
반응형
'STUDY > LeetCode' 카테고리의 다른 글
832. Flipping an Image (1) | 2022.08.21 |
---|---|
278. First Bad Version (0) | 2022.08.21 |
1491. Average Salary Excluding the Minimum and Maximum Salary (C++) (1) | 2022.08.17 |
26. Remove Duplicates from Sorted Array ( C++ ) (0) | 2022.08.17 |
2000. Reverse Prefix of Word (C++) (1) | 2022.08.11 |