Skip to content

Commit 48cb588

Browse files
committed
feat: add solutions to lc problem: No.0977. Squares of a Sorted Array
1 parent 9e48316 commit 48cb588

File tree

7 files changed

+257
-63
lines changed

7 files changed

+257
-63
lines changed

solution/0900-0999/0977.Squares of a Sorted Array/README.md

+94-1
Original file line numberDiff line numberDiff line change
@@ -58,15 +58,108 @@
5858
<!-- 这里可写当前语言的特殊实现逻辑 -->
5959

6060
```python
61-
61+
class Solution:
62+
def sortedSquares(self, nums: List[int]) -> List[int]:
63+
n = len(nums)
64+
res = [0] * n
65+
i, j, k = 0, n - 1, n - 1
66+
while i <= j:
67+
if nums[i] * nums[i] > nums[j] * nums[j]:
68+
res[k] = nums[i] * nums[i]
69+
i += 1
70+
else:
71+
res[k] = nums[j] * nums[j]
72+
j -= 1
73+
k -= 1
74+
return res
6275
```
6376

6477
### **Java**
6578

6679
<!-- 这里可写当前语言的特殊实现逻辑 -->
6780

6881
```java
82+
class Solution {
83+
public int[] sortedSquares(int[] nums) {
84+
int n = nums.length;
85+
int[] res = new int[n];
86+
for (int i = 0, j = n - 1, k = n - 1; i <= j;) {
87+
if (nums[i] * nums[i] > nums[j] * nums[j]) {
88+
res[k--] = nums[i] * nums[i];
89+
++i;
90+
} else {
91+
res[k--] = nums[j] * nums[j];
92+
--j;
93+
}
94+
}
95+
return res;
96+
}
97+
}
98+
```
99+
100+
### **C++**
101+
102+
```cpp
103+
class Solution {
104+
public:
105+
vector<int> sortedSquares(vector<int>& nums) {
106+
int n = nums.size();
107+
vector<int> res(n);
108+
for (int i = 0, j = n - 1, k = n - 1; i <= j;) {
109+
if (nums[i] * nums[i] > nums[j] * nums[j]) {
110+
res[k--] = nums[i] * nums[i];
111+
++i;
112+
} else {
113+
res[k--] = nums[j] * nums[j];
114+
--j;
115+
}
116+
}
117+
return res;
118+
}
119+
};
120+
```
121+
122+
### **Go**
123+
124+
```go
125+
func sortedSquares(nums []int) []int {
126+
n := len(nums)
127+
res := make([]int, n)
128+
for i, j, k := 0, n-1, n-1; i <= j; {
129+
if nums[i]*nums[i] > nums[j]*nums[j] {
130+
res[k] = nums[i] * nums[i]
131+
i++
132+
} else {
133+
res[k] = nums[j] * nums[j]
134+
j--
135+
}
136+
k--
137+
}
138+
return res
139+
}
140+
```
69141

142+
### **JavaScript**
143+
144+
```js
145+
/**
146+
* @param {number[]} nums
147+
* @return {number[]}
148+
*/
149+
var sortedSquares = function(nums) {
150+
const n = nums.length;
151+
const res = new Array(n);
152+
for (let i = 0, j = n - 1, k = n - 1; i <= j;) {
153+
if (nums[i] * nums[i] > nums[j] * nums[j]) {
154+
res[k--] = nums[i] * nums[i];
155+
++i;
156+
} else {
157+
res[k--] = nums[j] * nums[j];
158+
--j;
159+
}
160+
}
161+
return res;
162+
};
70163
```
71164

72165
### **...**

solution/0900-0999/0977.Squares of a Sorted Array/README_EN.md

+94-1
Original file line numberDiff line numberDiff line change
@@ -42,13 +42,106 @@ After sorting, it becomes [0,1,9,16,100].
4242
### **Python3**
4343

4444
```python
45-
45+
class Solution:
46+
def sortedSquares(self, nums: List[int]) -> List[int]:
47+
n = len(nums)
48+
res = [0] * n
49+
i, j, k = 0, n - 1, n - 1
50+
while i <= j:
51+
if nums[i] * nums[i] > nums[j] * nums[j]:
52+
res[k] = nums[i] * nums[i]
53+
i += 1
54+
else:
55+
res[k] = nums[j] * nums[j]
56+
j -= 1
57+
k -= 1
58+
return res
4659
```
4760

4861
### **Java**
4962

5063
```java
64+
class Solution {
65+
public int[] sortedSquares(int[] nums) {
66+
int n = nums.length;
67+
int[] res = new int[n];
68+
for (int i = 0, j = n - 1, k = n - 1; i <= j;) {
69+
if (nums[i] * nums[i] > nums[j] * nums[j]) {
70+
res[k--] = nums[i] * nums[i];
71+
++i;
72+
} else {
73+
res[k--] = nums[j] * nums[j];
74+
--j;
75+
}
76+
}
77+
return res;
78+
}
79+
}
80+
```
81+
82+
### **C++**
83+
84+
```cpp
85+
class Solution {
86+
public:
87+
vector<int> sortedSquares(vector<int>& nums) {
88+
int n = nums.size();
89+
vector<int> res(n);
90+
for (int i = 0, j = n - 1, k = n - 1; i <= j;) {
91+
if (nums[i] * nums[i] > nums[j] * nums[j]) {
92+
res[k--] = nums[i] * nums[i];
93+
++i;
94+
} else {
95+
res[k--] = nums[j] * nums[j];
96+
--j;
97+
}
98+
}
99+
return res;
100+
}
101+
};
102+
```
103+
104+
### **Go**
105+
106+
```go
107+
func sortedSquares(nums []int) []int {
108+
n := len(nums)
109+
res := make([]int, n)
110+
for i, j, k := 0, n-1, n-1; i <= j; {
111+
if nums[i]*nums[i] > nums[j]*nums[j] {
112+
res[k] = nums[i] * nums[i]
113+
i++
114+
} else {
115+
res[k] = nums[j] * nums[j]
116+
j--
117+
}
118+
k--
119+
}
120+
return res
121+
}
122+
```
51123

124+
### **JavaScript**
125+
126+
```js
127+
/**
128+
* @param {number[]} nums
129+
* @return {number[]}
130+
*/
131+
var sortedSquares = function(nums) {
132+
const n = nums.length;
133+
const res = new Array(n);
134+
for (let i = 0, j = n - 1, k = n - 1; i <= j;) {
135+
if (nums[i] * nums[i] > nums[j] * nums[j]) {
136+
res[k--] = nums[i] * nums[i];
137+
++i;
138+
} else {
139+
res[k--] = nums[j] * nums[j];
140+
--j;
141+
}
142+
}
143+
return res;
144+
};
52145
```
53146

54147
### **...**
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,17 @@
1-
bool check(int x, int y){
2-
return abs(x) < abs(y);
3-
}
4-
51
class Solution {
62
public:
7-
8-
vector<int> sortedSquares(vector<int>& A) {
9-
10-
sort(A.begin(), A.end(), check);
11-
12-
for(int i = 0; i < A.size(); i++)
13-
A[i] = pow(A[i], 2);
14-
15-
return A;
3+
vector<int> sortedSquares(vector<int>& nums) {
4+
int n = nums.size();
5+
vector<int> res(n);
6+
for (int i = 0, j = n - 1, k = n - 1; i <= j;) {
7+
if (nums[i] * nums[i] > nums[j] * nums[j]) {
8+
res[k--] = nums[i] * nums[i];
9+
++i;
10+
} else {
11+
res[k--] = nums[j] * nums[j];
12+
--j;
13+
}
14+
}
15+
return res;
1616
}
17-
};
17+
};
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
func sortedSquares(nums []int) []int {
2+
n := len(nums)
3+
res := make([]int, n)
4+
for i, j, k := 0, n-1, n-1; i <= j; {
5+
if nums[i]*nums[i] > nums[j]*nums[j] {
6+
res[k] = nums[i] * nums[i]
7+
i++
8+
} else {
9+
res[k] = nums[j] * nums[j]
10+
j--
11+
}
12+
k--
13+
}
14+
return res
15+
}
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,16 @@
11
class Solution {
2-
public int[] sortedSquares(int[] A) {
3-
for (int i = 0, n = A.length; i < n; ++i) {
4-
A[i] = A[i] * A[i];
2+
public int[] sortedSquares(int[] nums) {
3+
int n = nums.length;
4+
int[] res = new int[n];
5+
for (int i = 0, j = n - 1, k = n - 1; i <= j;) {
6+
if (nums[i] * nums[i] > nums[j] * nums[j]) {
7+
res[k--] = nums[i] * nums[i];
8+
++i;
9+
} else {
10+
res[k--] = nums[j] * nums[j];
11+
--j;
12+
}
513
}
6-
Arrays.sort(A);
7-
return A;
14+
return res;
815
}
916
}
Original file line numberDiff line numberDiff line change
@@ -1,46 +1,18 @@
11
/**
2-
* @param {number[]} A
2+
* @param {number[]} nums
33
* @return {number[]}
44
*/
5-
/**
6-
* Author: Mcnwork2018
7-
*/
8-
// 第一种解法
9-
var sortedSquares = function (A) {
10-
let results = A.map((item, index, array) => {
11-
return (item *= item);
12-
});
13-
results.sort((v1, v2) => {
14-
return v1 - v2;
15-
});
16-
return results;
17-
};
18-
// 第二种解法
19-
var sortedSquares = function (A) {
20-
let len = A.length; // 数组长度
21-
let j = 0; // j 正数开始
22-
while (j < len && A[j] < 0) {
23-
j++;
24-
}
25-
let i = j - 1; // i 负数开始
26-
let results = []; // 存放最终结果
27-
let t = 0; // results下标
28-
while (i >= 0 && j < len) {
29-
if (A[i] * A[i] < A[j] * A[j]) {
30-
results[t++] = A[i] * A[i];
31-
i--;
32-
} else {
33-
results[t++] = A[j] * A[j];
34-
j++;
35-
}
36-
}
37-
while (i >= 0) {
38-
results[t++] = A[i] * A[i];
39-
i--;
40-
}
41-
while (j < len) {
42-
results[t++] = A[j] * A[j];
43-
j++;
5+
var sortedSquares = function(nums) {
6+
const n = nums.length;
7+
const res = new Array(n);
8+
for (let i = 0, j = n - 1, k = n - 1; i <= j;) {
9+
if (nums[i] * nums[i] > nums[j] * nums[j]) {
10+
res[k--] = nums[i] * nums[i];
11+
++i;
12+
} else {
13+
res[k--] = nums[j] * nums[j];
14+
--j;
15+
}
4416
}
45-
return results;
46-
};
17+
return res;
18+
};
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
class Solution:
2+
def sortedSquares(self, nums: List[int]) -> List[int]:
3+
n = len(nums)
4+
res = [0] * n
5+
i, j, k = 0, n - 1, n - 1
6+
while i <= j:
7+
if nums[i] * nums[i] > nums[j] * nums[j]:
8+
res[k] = nums[i] * nums[i]
9+
i += 1
10+
else:
11+
res[k] = nums[j] * nums[j]
12+
j -= 1
13+
k -= 1
14+
return res

0 commit comments

Comments
 (0)