前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >有序数组的平方+相关练习

有序数组的平方+相关练习

作者头像
亦小河
发布2022-11-14 17:24:16
2320
发布2022-11-14 17:24:16
举报
文章被收录于专栏:技术博客感悟技术博客感悟

977. 有序数组的平方 - 力扣(LeetCode)

这题小伙伴们肯定很快想到 把每个数平方之后再排序吧!

但排序你是否掌握了呢?哈哈哈,不用担心,我们可以直接引用排序函数。

但小伙伴们,对于排序的基本算法自己也一定要掌握哦!(偷偷告诉小伙伴们,我其实也没掌握呜呜呜,需要反复多多练习。)

废话不多说,直接上代码:

代码语言:javascript
复制
class Solution {
public:
    vector<int> sortedSquares(vector<int>& nums) {
        for(int i = 0; i < nums.size(); i++){
            nums[i] *= nums[i];
        }
        sort(nums.begin(),nums.end());
        return nums;
    }
};

sort();就是我们说的排序函数(快速排序)啦!默认为升序排列。

但是小伙伴们别忘了加必须的头文件哦!

#include<algorithm>

using namespace std;

当然还有一种情况,我们可以用上双指针法。

就是数组平方的最大值就在数组的两端,不可能是中间。小伙伴们,当你们看到有负数的升序排列时,就可以立马想到用这个方法哦!

来,咱们上代码:

代码语言:javascript
复制
class Solution {
public:
    vector<int> sortedSquares(vector<int>& nums) {
       int k = nums.size() - 1;
       vector<int> result(nums.size(),0);
       int j = nums.size() - 1;
       for(int i = 0; i <= j;) {
           if(nums[i]*nums[i] < nums[j]*nums[j]){
               result[k--] = nums[j]*nums[j];
               j--;
           }
           else{
               result[k--] = nums[i]*nums[i];
               i++;
           }
       }
        return result;
    }
};

小伙伴们,如果一下子不能理解建议动手画一下图哦!思路可能会清晰一点。

或者明天再看看,但是千万不要放在一边不管或者是放弃哦!

咱们一起加油呀! 

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2022-10-30,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档