首页 > 其他分享 >代码随想录:有序数组的平方

代码随想录:有序数组的平方

时间:2024-11-14 21:01:38浏览次数:1  
标签:平方 nums 随想录 插入 vector 数组

代码随想录:有序数组的平方

仍然是双指针,一开始也想到了双指针,不过很笨的创造了两个数组,一个负数的一个正数的,两个数组比大小后插入。但其实可以直接把原数组平方后,从左右两边插入。

有两点值得注意:1.已知数组大小的情况下,可以直接倒着插入数组。2.创建vector时需要指定元素的个数。

class Solution {
public:
    vector<int> sortedSquares(vector<int>& nums) {
        vector<int>vec(nums.size());
        int target = nums.size()-1;
        //先直接平方,从左右两边找更大的那个,反向插入目标数组
        for(int i=0;i<nums.size();i++){
            nums[i]=nums[i]*nums[i];
        }
        for(int i=0, j=nums.size()-1;target>=0;){
            if(nums[i]<nums[j]){
                vec[target]=nums[j];
                j--;
            }
            else{
                vec[target]=nums[i];
                i++;
            }
            target--;
        }
        return vec;
    }
};

标签:平方,nums,随想录,插入,vector,数组
From: https://www.cnblogs.com/huigugu/p/18546792

相关文章

  • 郝玩的数据结构2——树状数组(待upd)
    首先,拉张图树状数组,相对于线段树来说,空间复杂度更小,但是可以处理的信息具有局限性常用于处理区间(矩阵)查改(差分转化为单点查改),单点查改板子题1Accode:点击查看代码#include<bits/stdc++.h>#definelowbitx&-xusingnamespacestd;intn,m,s[500005];voidchange(intx......
  • Java 数组操作:反转、扩容与缩容
    在Java中,数组是一种固定长度的数据结构,一旦创建,其大小无法更改。然而,常常在实际编程中,我们需要对数组进行扩容、缩容或其他操作。本文将介绍如何通过Java实现数组反转、扩容和缩容的操作,并在代码中演示这些常见的数组操作。1.数组反转数组反转是一个常见的操作,通常用于......
  • K-Means聚类分析以及误差平方和SSE(Python实现)
    K-means聚类的原理。K-Means算法的目标是将原始数据分为K簇,每一簇都有一个中心点,这也是簇中点的均值点,簇中所有的点到所属的簇的中心点的距离都比到其他簇的中心点更近。K-means聚类的算法流程。1、随机确定K个点作为质心(在本次实验中,我在数据中使用随机数选择了K个点作为初始......
  • 代码随想录算法训练营第一天| 704. 二分查找、35.搜索插入位置、27. 移除元素、977.有
    文档讲解:代码随想录视频讲解:代码随想录状态:完成4道题一、数组理论基础数组:连续内存空间,存储类型相同的元素集合,适合读不适合写注意:Python里可以存储不同类型的元素,但刷题时都是按照相同元素去做的相同元素占用存储的空间大小是一样的,下一个元素的位置就确定了数组时间......
  • 代码随想录算法训练营第二天| 209.长度最小的子数组、59. 螺旋矩阵 II
    文档讲解:代码随想录视频讲解:代码随想录状态:完成2道题滑动窗口滑动窗口:两个指针一前一后组成滑动窗口,并计算滑动窗口中的元素的问题适用场景:字符串匹配问题、子数组问题、定长问题滑动窗口模板:如果一个字符进入窗口,应该增加windows计数器;如果一个字符将移除窗口的......
  • 代码随想录算法训练营第三十天| 452. 用最少数量的箭引爆气球 、435. 无重叠区间 、76
    452.用最少数量的箭引爆气球思路:以前做过最大不相交子序列的题,这次也是往这根据某一端排序的思路想的,排序后如下图,只需要维护一个公共序列的右边界r就可以了,下一次判断时,只需要判断子区间的左边是否小于r。这个题有点坑的是使用Arrays排序,如果使用昨天的方法:Arra......
  • 代码随想录算法训练营 | 200.岛屿的数量
    岛屿的数量题目链接:https://leetcode.cn/problems/number-of-islands/此题目要点:dfs和bfs都可以解决此题,但是使用dfs代码会更加的简洁首先对grid进行遍历,每一个节点都进行检查,判断是否是1(陆地)如果是,则进行dfs深搜,并将所有搜到的岛屿节点全置为0,表示此块岛屿已经被搜过了,防......
  • C#学习 数组(22)
    创建数组string[]cars={"Volvo","BMW","Ford","Mazda"};int[]myNum1={10,20,30,40};int[]myNum2=newint[4]{10,20,30,40};int[]myNum3=newint[]{10,20,30,40};int[]myNum4=newint[4];myNum4[0]=10;......
  • P8863 「KDOI-03」构造数组
    P8863「KDOI-03」构造数组cplusoj:SS241113D.构造数组(array)题意给你一个长度为\(n\le5000\)的数组\(\{b\}\),满足\(\sumb\le30000\)。每次操作你可以选择两个下标\(i,j,i\neqj\),将\(b_i,b_j\)减\(1\),问有多少种操作方式使得\(b\)变成全部是\(0\)。思路看......
  • 代码随想录算法训练营day45| 115.不同的子序列 583. 两个字符串的删除操作 72.
    学习资料:https://programmercarl.com/0115.不同的子序列.html#算法公开课动态规划系列之编辑距离问题学习记录:115.不同的子序列(当遇到相同字母时,可以选择也可以不选;刚开始没看懂;dp[i][j]是对应i-1结尾和j-1结尾,这样的目的是方便第一行和第一列初始化)点击查看代码classSolut......