21 lines
1.0 KiB
Markdown
21 lines
1.0 KiB
Markdown
Leetcode #977 | #Easy | [Два указателя](../../Методы/Два%20указателя.md) | [Указатель на запись](../../Методы/Указатель%20на%20запись.md)
|
|
## Идея
|
|
Два указателя - один с конца другой с начала (идея в том что большие квадраты по краям). Дальше бежим по циклу указателем write с конца и заполняем с конца, то есть большими числами (сравниваем их по абсолютной величине)
|
|
## Big-O
|
|
- Время ```O(N)```
|
|
- Память ```O(N)```
|
|
## Код
|
|
```Java
|
|
class Solution {
|
|
public int[] sortedSquares(int[] nums) {
|
|
int n = nums.length;
|
|
int[] res = new int[n];
|
|
int l = 0, r = n - 1;
|
|
for (int w = n - 1; w >= 0; w--) {
|
|
if (Math.abs(nums[l]) > Math.abs(nums[r])) { res[w] = nums[l] * nums[l]; l++; }
|
|
else { res[w] = nums[r] * nums[r]; r--; }
|
|
}
|
|
return res;
|
|
}
|
|
}
|
|
``` |