卡码网--数组篇(有序数组的平方)

news2024/9/21 4:24:28

系列文章目录


卡码网–数组篇(二分法)

卡码网–数组篇(移除元素)

文章目录

  • 系列文章目录
  • 前言
  • 977.有序数组的平方


前言

代码随想录详情链接


977.有序数组的平方

力扣链接:https://leetcode.cn/problems/squares-of-a-sorted-array/description/

在这里插入图片描述

Step 1: 读题:

  1. 非递减序列 就是后面的数>=前面的
  2. 返回的数组也要按非递减序列,就是也要排序
  3. 注意有负值,求平方的话,有0,则最小值应该为0

Step2 :可以求绝对值,用绝对值排序,再平方

class Solution {
public:
    vector<int> sortedSquares(vector<int>& nums) {
        int size = nums.size();
        vector<int> newnums(size);
        for (int i=0;i<size;i++)
        {
            nums[i]=abs(nums[i]);
        }
        sort(nums.begin(),nums.end());
        for(int j = 0;j<size;j++)
        {
            newnums[j]=nums[j]*nums[j];
        }
        return newnums;
    }
    
};

这里有几个注意的点:

  1. vector newnums(size); 定义一个新的容器的时候,记得一定要给他大小。
  2. 排序函数 sort(nums.begin(),nums.end())
class Solution:
    def sortedSquares(self, nums: List[int]) -> List[int]:
        size = len(nums)
        L = [0] *size
        for i in range(0,size):
            nums[i] = abs(nums[i])
            i = i+1
        nums.sort()
        for j in range(0,size):
            L[j] = nums[j]*nums[j]
            j = j+1
        return L
        

这里注意 ,python里面新建列表 L = [0] *size 要预先分配空间,还有sort函数和C++中不一样。

双指针法

在这里插入图片描述

具体思路就是,由于是非递减序列,然后又有负数,最小值最多为0.所以排在最外面的绝对值最大,即平方后值最大。所以可以从两端开始比较,将大的一方放入新数组的最外侧。

#include <vector>  
#include <algorithm>  
  
class Solution {  
public:  
    std::vector<int> sortedSquares(std::vector<int>& nums) {  
        std::vector<int> result(nums.size());   
        int left = 0, right = nums.size() - 1, index = nums.size() - 1;  
        while (left <= right) {  
            int leftSquare = nums[left] * nums[left];  
            int rightSquare = nums[right] * nums[right];  
            if (leftSquare > rightSquare) {  
                result[index] = leftSquare;  
                left++;  
            } else {  
                result[index] = rightSquare;  
                right--;  
            }  
            index--;  
        }  
        return result;  
    }  
};
class Solution:
    def sortedSquares(self, nums: List[int]) -> List[int]:
        size = len(nums)
        L = [0] *size
        left=0
        right = size-1
        index = size-1
      
        while(left<=right):
            leftsquare = nums[left]*nums[left]
            rightsquare = nums[right]*nums[right]
            if(leftsquare>rightsquare):
                L[index] = leftsquare
                left = left+1
            else:
                L[index] = rightsquare
                right = right -1
            index=index-1
        return L
          
        

这里要注意,left和right指针相遇时也要算到,不然会漏掉一个

时间复杂度为O(nlogn)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1983012.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Xinstall全链路数据统计,助力推广者破解社交分享难题

在数字营销的时代&#xff0c;社交分享推广已成为App运营的重要手段。然而&#xff0c;推广者们在进行社交分享推广时&#xff0c;往往面临着诸多痛点。其中&#xff0c;最关键的问题便是如何准确、高效地统计推广效果。今天&#xff0c;我们就来聊聊Xinstall这一神奇工具&…

【优秀python大屏】基于python flask的广州历史天气数据应用与可视化大屏

摘要 气象数据分析在各行各业中扮演着重要的角色&#xff0c;尤其对于农业、航空、海洋、军事、资源环境等领域。在这些领域中&#xff0c;准确的气象数据可以对预测未来的自然环境变化和采取行动来减轻负面影响的决策起到至关重要的作用。 本系统基于Python Flask框架&#…

五种IO模型(阻塞,非阻塞,多路复用[select, poll, epoll],信号驱动,异步IO)

五种IO模型&#xff08;阻塞&#xff0c;非阻塞&#xff0c;信号驱动[select, poll, epoll]&#xff0c;多路复用&#xff0c;异步IO&#xff09; 本章节代码&#xff1a;一&#xff0c;五种IO模型阻塞IO非阻塞IO多路复用&#xff08;也叫多路转接&#xff09;信号驱动异步IO例…

Solaris10(SPARC/x86)源码编译安装64位Python

Solaris10(SPARC/x86)源码编译安装64位Python 系统自带的Python版本为32位&#xff0c;需要安装64位版本Python。 solariskalami>python Python 3.3.6 (default, Mar 18 2016, 14:34:49) [GCC 5.2.0] on sunos5 Type "help", "copyright", "cred…

redis在Dokcer的安装使用

1 redis 安装和配置 # redis 是什么 开源&#xff1a;基于c编写的&#xff0c;早起版本2w3千行 基于键值对的存储系统&#xff1a;字典形式 多种数据结构&#xff1a;字符串&#xff0c;hash&#xff0c;列表&#xff0c;集合&#xff0c;有序集合 高性能&#xff0c;功能丰富…

ORB-SLAM2运行环境搭建

操作系统&#xff1a;Ubuntu20.04 1.安装Eigen3 推荐大家安装版本 3.2.10 链接&#xff1a;https://eigen.tuxfamily.org/index.php?titleMain_Page mkdir build cd build cmake .. sudo make install2.安装Pangolin 推荐安装0.5版本 链接&#xff1a;https://github.com…

【生成式AI-二-强大的AI下我们可以做什么】

强大的AI下我们可以做什么 人工智能的厉害之处我们可以作什么评估模型好坏的难度prompt engineering微调fine tune 人工智能的厉害之处 人工智能并不是忽然就爆火的&#xff0c;事实上&#xff0c;很久以前就已经有深度学习、机器学习这些概念了&#xff0c;那现在的人工智能和…

MybatisPlus常见注解及配置

什么是MybatisPlus? MybatisPlus&#xff08;简称MP&#xff09;是一个基于MyBatis的增强工具&#xff0c;它在MyBatis的基础上进行了扩展&#xff0c;旨在简化MyBatis的操作&#xff0c;提高开发效率。MybatisPlus继承了MyBatis原生的所有特性&#xff0c;并添加了一些额外的…

【C++刷题】优选算法——BFS第三辑

多源BFS问题解决&#xff1a;用 BFS 解决边权为1的多源最短路问题 解法一&#xff1a;把多源最短路问题转化为若干个单源最短路问题 解法二&#xff1a;把所有的源点当成一个“超级源点”&#xff0c;从而转化为单源最短路问题&#xff08;推荐&#xff09; 单源最短路问题的解…

Linux进程--进程查询和创建

目录 一、前言二、进程查询三、进程创建1.创建操作2.返回值疑云 一、前言 本篇文章的探讨是基于一定的进程理解的&#xff0c;在此基础上对有关进程的操作进行讲解。 二、进程查询 首先我们来认识一下进程查询的指令 ps ajx |head -1&& ps ajx |grep process |grep…

B1.5 EL0视角下的软件控制功能

快速链接: . 👉👉👉 ARMv8/ARMv9架构入门到精通-[目录] 👈👈👈 付费专栏-付费课程 【购买须知】个人博客笔记导读目录(全部) B1.5 EL0视角下的软件控制功能 以下章节描述了软件控制功能的EL0视图: 异常处理 等待中断和等待事件

Dubbo源码深度解析(二)

接着《Dubbo源码深度解析(一)》继续讲&#xff0c;上篇博客主要讲Dubbo提供的三个注解的作用&#xff0c;即&#xff1a;EnableDubbo、DubboComponentScan、EnableDubboConfig。其中后两个注解是在EnableDubbo上的&#xff0c;因此在启动类上加上EnableDubbo注解&#xff0c;等…

Java并发—volatile关键字的作用及使用场景

在这篇文章Java并发—Java内存模型以及线程安全-CSDN博客多次提及volatile关键字&#xff0c;这是一个非常重要的概念&#xff0c;主要用于多线程编程中&#xff0c;它确保了变量的可见性和禁止指令重排序&#xff0c;但不保证原子性&#xff0c;下面详细解释volatile关键字的作…

使用SpringAOP实现公共字段填充

文章目录 概要整体架构流程技术细节小结 概要 在新增员工或者新增菜品分类时需要设置创建时间、创建人、修改时间、修改人等字段&#xff0c;在编辑员工或者编辑菜品分类时需要设置修改时间、修改人等字段。这些字段属于公共字段&#xff0c;也就是也就是在我们的系统中很多表…

Flux:Midjourney的新图像模型挑战者

--->更多内容&#xff0c;请移步“鲁班秘笈”&#xff01;&#xff01;<--- Black Forest Labs是一家由前Stability.ai开发人员创立的AI初创公司&#xff0c;旨在为图像和视频创建尖端的生成式 AI 模型。这家初创公司声称&#xff0c;其第一个模型系列Flux.1为文本到图像…

【FAQ】为啥MultipartFile 的InputStream available会为0

背景 在Spring boot 文件上传案例中可能会存在获取MultipartFile InputStream.available()方法为0的情况&#xff0c;导致在文件上传到Minio后对象大小为0的情况 问题原因 在介绍问题原因前我们先探究下MultipartFile 是怎么实现的 这里只是剖析InputStream&#xff0c;所以…

Linux驱动入门实验班day03-另一种注册cdev的方式

问题&#xff1a;原来的函数/*major register_chrdev(0, "100ask_hello", &hello_drv);*/会将主设备号major对应的所有次设备号&#xff0c;对应的设备节点&#xff0c;总是访问到驱动程序hello_drv。 这个问题&#xff0c;会导致主设备号不够用。 解决方式&am…

c++ - unordered_set与unordered_map模拟实现

文章目录 前言一、unordered_set模拟实现二、unordered_map模拟实现 前言 1、unordered_set与unordered_map的介绍与接口使用可参考&#xff1a;unordered_set 、 unordered_map。 2、unordered_set和 unordered_map 的底层实现都是基于哈希表的。哈希表是一种通过哈希函数组织…

HarmonyOS(48) 挂载卸载事件 UI组件的添加和删除监听

UI组件的添加和删除监听 一级目录示例代码参考资料 一级目录 我们通过if条件添加组件的时候&#xff0c;是可以通过onAttach、onDetach、onAppear、onDisAppear来监听组件的添加和删除。 示例代码 // xxx.ets// xxx.ets import { promptAction } from kit.ArkUIEntry Compo…

2024华数杯数学建模A题完整论文讲解(含每一问python代码+结果+可视化图)

大家好呀&#xff0c;从发布赛题一直到现在&#xff0c;总算完成了2024 年华数杯全国大学生数学建模竞赛A题机器臂关节角路径的优化设计完整的成品论文。 本论文可以保证原创&#xff0c;保证高质量。绝不是随便引用一大堆模型和代码复制粘贴进来完全没有应用糊弄人的垃圾半成…