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 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)

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