首页 > 其他分享 >有序数组的平方(双指针)

有序数组的平方(双指针)

时间:2023-02-22 22:47:58浏览次数:27  
标签:平方 nums int vector 数组 排序 指针

题目:

给你一个按 非递减顺序 排序的整数数组 nums,返回 每个数字的平方 组成的新数组,要求也按 非递减顺序 排序。

示例 1:

输入:nums = [-4,-1,0,3,10]
输出:[0,1,9,16,100]
解释:平方后,数组变为 [16,1,0,9,100]
排序后,数组变为 [0,1,9,16,100]

思路:

  • 首先排除暴力解,依次遍历平方,后排序,排序时间复杂度最低为NlogN。
  • 因为是非递减顺序排序的数组,使用两个指针分别指向第一个数和最后一个数,然后进行开平方的比较,大的放入新的数组中,指针向中间移动。
class Solution {
public:
    vector<int> sortedSquares(vector<int>& nums) {
        int a = 0;
        int n = nums.size();
        int b = n - 1;
        int i = n - 1;
        vector<int> newNums(n);
        while(a<=b){
            if(nums[a] * nums[a] < nums[b] * nums[b]){
                newNums[i--] = nums[b]*nums[b];
                --b;
            }else{
                newNums[i--] = nums[a]*nums[a];
                ++a;
            }
        }
        return newNums;

    }
};
  • 这道题出现了很多未知错误,但最终还是一一解决,根本原因还是对语法的不熟悉。
    1. int b,i = n - 1; 其中只给i赋值,b不赋值。
    2. 新建的vector容器要说明大小,不然需要push_back才能放入数。

标签:平方,nums,int,vector,数组,排序,指针
From: https://www.cnblogs.com/isku-ran/p/17146291.html

相关文章

  • 方法 与 数组
    方法与数组1.方法总结方法中所关注的重点是:传入的参数与返回值的类型2.数组数组基础数组可以存储相同类型的多个元素,但是不能存储不同类型的数据,且存储的......
  • C# json数组排序-根据指定key排序-jsonArray
    //jsonArray.ToJson()是json数组根据指定treatment_no来进行排序json字符串[{"treatment_type":"1","treatment_no":"42",},{"treatment_type":......
  • 双指针法(巧妙思想)
    双指针法(巧妙思想)21.合并两个有序链表将两个升序链表合并为一个新的升序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。示例1:输入:l1=[1,2,4],......
  • SafeArray 一维数组解析方法
    //方法2SafeArrayGetElement(SAFEARRAY*psa,long*ailndex,void*pvElem)if(pvDataValues->vt&VT_ARRAY){switch(pvDataValues->vt){......
  • 【鼠】安卓学习杂记(二十三)——Android之Adapter之ArrayAdapter(数组适配器——无需写
    一、效果图二、XML代码<?xmlversion="1.0"encoding="utf-8"?><LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"android:layout_wi......
  • 杨辉三角形和数组练习
    1.杨辉三角形1.1使用二维数组打印一个10行杨辉三角publicclassTest22{publicstaticvoidmain(String[]args){intyanghui[][]=newint[10][];for(int......
  • 数组常用方法
    常用的数组方法1.arr.push()向数组最后增加元素,改变的是原数组2.arr.unshift()向数组最前面增加元素,改变原数组3.arr.pop()删除数组最后一个元素,改变原数组4.arr.shift......
  • 继承与this指针
    子类构造时,父类的构造函数中若出现this,那么这个this时指向子类对象的:参考:https://blog.csdn.net/qilvmilv/article/details/47324487 此外qt中:      他打......
  • 寻找字符串数组中的最长前缀
    //编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串 ""。  Java:classSolution{publicStringlongestCommonPrefix(String[]s......
  • JavaScript 数组遍历的五种方法(转)
    转自:JavaScript数组遍历的五种方法这篇文章主要介绍了JavaScript数组遍历的五种方法,帮助大家更好的理解和学习使用JavaScript,感兴趣的朋友可以了解下在使用JavaScri......