Skip to content

Commit 4f272fe

Browse files
committed
q977
1 parent 5ca1b92 commit 4f272fe

File tree

1 file changed

+36
-2
lines changed

1 file changed

+36
-2
lines changed

double-pointer/src/q977.rs

Lines changed: 36 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,40 @@
11
struct Solution ();
22
impl Solution {
3-
pub fn sorted_squares(nums: Vec<i32>) -> Vec<i32> {
3+
4+
pub fn sorted_squares(nums: Vec<i32>) -> Vec<i32> {
5+
let n = nums.len();
6+
7+
if n == 0 {
8+
return vec![]
9+
}
10+
11+
12+
let mut p1 = 0;
13+
let mut p2 = n - 1;
14+
let mut result = vec![];
15+
16+
while p1 != p2 {
17+
let l = nums[p1] * nums[p1];
18+
let r = nums[p2] * nums[p2];
19+
20+
if l <= r {
21+
p2 = p2 - 1;
22+
result.push(r)
23+
}
24+
25+
if l >= r {
26+
p1 = p1 + 1;
27+
result.push(l)
28+
}
29+
}
30+
31+
result.push(nums[p1] * nums[p1]);
32+
result.into_iter().rev().collect()
33+
}
34+
35+
36+
37+
pub fn sorted_squares2(nums: Vec<i32>) -> Vec<i32> {
438
let n = nums.len();
539

640
if n == 0 {
@@ -82,7 +116,7 @@ mod tests {
82116
use super::*;
83117

84118
#[test] fn test_1() {
85-
// assert_eq!(Solution::sorted_squares(vec![-4,-1,0,3,10]), vec![0,1,9,16,100]);
119+
assert_eq!(Solution::sorted_squares(vec![-4,-1,0,3,10]), vec![0,1,9,16,100]);
86120
assert_eq!(Solution::sorted_squares(vec![-3,0,2]), vec![0,4, 9])
87121

88122
}

0 commit comments

Comments
 (0)