当前位置: 首页 > article >正文

有序数组的平方(leetcode 977)

一个数组,返回一个所有元素的平方之后依然是一个有序数组。(数组中含负数)

解法一:暴力解法

        所有元素平方后再使用快速排序法重新排序,时间复杂度为O(nlogn)。

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;
    }
};

解法二:双指针

        思路:最大数一定在这个数组的两边,不可能在中间。利用两个指针从两边逐步向中间靠拢的过程,得到一个由大到小的数组。得到由小到大的数组,就是在更新新的数组时,下标由大到小来进行更新。

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


http://www.kler.cn/a/400599.html

相关文章:

  • css数据不固定情况下,循环加不同背景颜色
  • 5.4.2-1 编写Java程序在HDFS上创建文件
  • fpga 同步fifo
  • 【大语言模型】ACL2024论文-16 基于地图制图的罗马尼亚自然语言推理语料库的新型课程学习方法
  • 前端:HTML (学习笔记)【1】
  • MySQL 怎么不丢数据(关于开启双1配置)
  • Redis自学之路—基础数据结构具体方法解析(五)
  • 【网络安全 | 甲方建设】双/多因素认证、TOTP原理及实现
  • 基于 MATLAB 的模拟退火算法详解及实现
  • 小鹏汽车嵌入式面试题及参考答案
  • MySQL索引原理之查询优化
  • Altenergy电力系统控制软件 status_zigbee SQL注入漏洞复现(CVE-2024-11305)
  • MATLAB绘制正四面体、正六面体
  • LSTM 和 LSTMCell
  • 无人机的动力系统节能——CKESC电调小课堂12
  • MySQL学习/复习6复合查询
  • 【揭秘】CSS in JS:用JS对象定义样式,告别类名冲突(4)
  • 字节跳动辞退103人
  • 111页PPT丨服装零售行业数字化时代的业务与IT转型规划
  • Jenkins关闭更新提醒和插件提醒
  • 36.矩阵格式的等差数列 C语言
  • 前端开发模块VUE-Element UI学习笔记
  • Thinkpad E15 在linux下升级 bios
  • 基于单片机的厂房防火报警系统
  • 如何准备 PostgreSQL 中级认证考试?
  • CentOS7.9 源码编译 FreeSWITCH 1.10.12