【数据结构与算法系列3】有序数组的平方 (C++ Python)

news/2024/7/7 21:26:57

给你一个按 非递减顺序 排序的整数数组 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]

提示:

  • 1 <= nums.length <= 104
  • -104 <= nums[i] <= 104
  • nums 已按 非递减顺序 排序
  • 使用双指针算法

C++代码实现:

#include <iostream>
#include <vector>

using namespace std;

vector<int> sortedSquares(vector<int>& nums) {
    int r_point = nums.size() - 1;
    vector<int> result(nums.size(), 0);
    for (int slowpoint = 0, fasterpoint = nums.size() - 1; slowpoint <= fasterpoint;) {
        if (nums[slowpoint] * nums[slowpoint] > nums[fasterpoint] * nums[fasterpoint]) {
            result[r_point--] = nums[slowpoint] * nums[slowpoint];
            slowpoint++;
        }
        else
        {
            result[r_point--] = nums[fasterpoint] * nums[fasterpoint];
            fasterpoint--;
        }
    }
    return result;
}

在这里插入图片描述

python实现:

from typing import List

def sortedSquares(nums: List):
    slowpoint = 0
    fasterpoint = len(nums) - 1
    r_point = len(nums) - 1
    results: List = [float('inf')] * len(nums) 

    while slowpoint <= fasterpoint:
        if nums[slowpoint] ** 2 > nums[fasterpoint] ** 2:
            results[r_point] = nums[slowpoint] ** 2
            r_point -= 1
            slowpoint += 1
        else:
            results[r_point] = nums[fasterpoint] ** 2
            r_point -= 1
            fasterpoint -= 1

    return results

if __name__ == "__main__":
    nums = [-23, -4, -3, 1, 2, 3, 4, 5, 9, 10, 12]
    print(sortedSquares(nums))

在这里插入图片描述


http://lihuaxi.xjx100.cn/news/1529959.html

相关文章

直播 | 丹望医疗王晓林博士“基于微流控的血管化器官/类器官芯片构建及其应用”

类器官模型具有高仿真性&#xff0c;与人体器官有高度相似的组织学特征和功能&#xff0c;尤其在肿瘤模型中能够较好保留肿瘤异质性等优势&#xff0c;在精准医疗及药物筛选等领域具有广泛的应用前景。同时&#xff0c;基于微流控技术的器官芯片能在微流体装置上实现多重微环境…

Maven学习记录

一、Maven是什么 简单来说Maven是一个标准化的java管理和构建工具&#xff0c;它提供了一系列规范&#xff0c;包括项目结构&#xff0c;构建流程&#xff08;编译&#xff0c;测试&#xff0c;打包&#xff0c;发布……&#xff09;&#xff0c;依赖管理等。 标准化就是定下…

【数据库】数据库的一级二级三级封锁协议

背景&#xff1a;秋招做笔试题被问住了&#xff0c;数据库课上没学过这个啊…… 因为笔者也是初学&#xff0c;如果有错误&#xff0c;欢迎发评论批评指正。 数据库的一级、二级、三级封锁协议应该是指适用于当前读的加锁策略。 一级&#xff1a;读不加锁&#xff1b;写加排…

【Linux问题】日期校准

问题 请求阿里云对象存储返回 The difference between the reguest time and the current time is too large. 规定时间和当前时间之间的差异太大。 由于虚拟机出现问题导致服务器时间不准 正常的服务器时间 异常的服务器时间 设置一下时间就好 校准时间 安装 yum insta…

LeetCode刷题笔记【31】:动态规划专题-3(整数拆分、不同的二叉搜索树)

文章目录 前置知识343. 整数拆分题目描述解题思路代码进一步优化 96.不同的二叉搜索树题目描述解题思路代码优化改进 总结 前置知识 参考前文 参考文章&#xff1a; LeetCode刷题笔记【29】&#xff1a;动态规划专题-1&#xff08;斐波那契数、爬楼梯、使用最小花费爬楼梯&…

【美团3.18校招真题2】

大厂笔试真题网址&#xff1a;https://codefun2000.com/ 塔子哥刷题网站博客&#xff1a;https://blog.codefun2000.com/ 最多修改两个字符&#xff0c;生成字典序最小的回文串 提交网址&#xff1a;https://codefun2000.com/p/P1089 由于字符串经过修改一定为回文串&#x…

代码随想录二刷day18

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、力扣513. 找树左下角的值二、力扣112. 路径总和三、力扣113. 路径总和 II四、力扣106. 从中序与后序遍历序列构造二叉树五、力扣105. 从前序与中序遍历序列…

【六袆 - Windows】PL/SQL instantclient安装包下载;PL/SQL双击登录配置

安装 PL/SQL 15 OMIT Oracle Instant Client Downloads for Microsoft Windows (x64) 64-bit https://www.oracle.com/database/technologies/instant-client/winx64-64-downloads.html 配置 # tnsnames.ora Network Configuration File:E:\oracle\product\10.2.0\db_1\ne…