本文主要是介绍1.3-数组-977. 有序数组的平方★,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
977. 有序数组的平方 ★
力扣题目链接,给你一个按 非递减顺序 排序的整数数组 nums
,返回 每个数字的平方 组成的新数组,要求也按 非递减顺序 排序。
1 <= nums.length <= 104
-104 <= nums[i] <= 104
nums
已按 非递减顺序 排序
示例 1:
输入:nums = [-4,-1,0,3,10]
输出:[0,1,9,16,100]
解释:平方后,数组变为 [16,1,0,9,100]
排序后,数组变为 [0,1,9,16,100]
示例 2:
输入:nums = [-7,-3,2,3,11]
输出:[4,9,9,49,121]
本地练习
pub struct Solution;impl Solution {pub fn sorted_squares(nums: Vec<i32>) -> Vec<i32> {}
}fn main() {let res = [vec![-4, -1, 0, 3, 10], vec![-7, -3, 2, 3, 11]].iter().map(|x| Solution::sorted_squares(x.to_vec())).collect::<Vec<_>>();println!("{:?}: {:?}", vec![vec![0, 1, 9, 16, 100], vec![4, 9, 9, 49, 121]] == res, res);
}
Rust答案
impl Solution {pub fn sorted_squares(nums: Vec<i32>) -> Vec<i32> {let n = nums.len();let (mut i, mut j, mut k) = (0, n - 1, n);let mut ans = vec![0; n];while i <= j {if nums[i] * nums[i] < nums[j] * nums[j] {ans[k - 1] = nums[j] * nums[j];j -= 1;} else {ans[k - 1] = nums[i] * nums[i];i += 1;}k -= 1;}ans}
}
这篇关于1.3-数组-977. 有序数组的平方★的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!