Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

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‎

Lines changed: 94 additions & 1 deletion
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‎

Lines changed: 94 additions & 1 deletion
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
### **...**
Lines changed: 14 additions & 14 deletions
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+
};
Lines changed: 15 additions & 0 deletions
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+
}
Lines changed: 12 additions & 5 deletions
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
}
Lines changed: 14 additions & 42 deletions
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+
};
Lines changed: 14 additions & 0 deletions
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)

AltStyle によって変換されたページ (->オリジナル) /