首页 > 其他分享 >leet Code 977. Squares of a Sorted Array_network

leet Code 977. Squares of a Sorted Array_network

时间:2022-10-11 14:24:25浏览次数:67  
标签:977 leet Code nums int 复杂度 vector Squares size

[977. Squares of a Sorted Array]

[(https://leetcode.cn/problems/squares-of-a-sorted-array/)

image-20221011113110196

暴力解法

  • 对数组中每个元素平方后再排序

  • 代码如下:

    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;
        }
    };
    
  • 时间复杂度: O(n + nlogn)

    空间复杂度:O(1)

双指针

  • 根据题意,数组内元素是按non-decreasing排列。因此,最大数必然要么在左要么在右,不可能在中间

  • 故,我们设置 l = 0, r = nums.size() - 1 ,让i指向起始位置,而r指向最终位置,两边不断向中间移动

  • 再者,我们创建一个与nums大小相同的新数组,让i指向数组的最终位置

  • 若nums[ l ] * nums[ l ] < nums[ r ] * nums[ r ],result[ i-- ] = nums[ r ] * nums[ r ]

    若nums[ l ] * nums[ l ] > nums[ r ] * nums[ r ],result[ i-- ] = nums[ l ] * nums[ l ]

  • 代码如下:

class Solution {
public:
    vector<int> sortedSquares(vector<int>& nums) {
        int i = nums.size() - 1;
        vector<int>result( i + 1 );
        for( int l = 0, r = nums.size() - 1; l <= r; )	//最后需处理一个元素,因此为l <= r
        {
            if( nums[l] * nums[l] < nums[r] * nums[r] )
            {
                result[i--] = nums[r] * nums[r];
                --r;
            }
            else
            {
                result[i--] = nums[l] * nums[l];
                ++l;
            }
        }
        return result;
    }
};
  • 时间复杂度:O(n)

    空间复杂度:O(1)

标签:977,leet,Code,nums,int,复杂度,vector,Squares,size
From: https://www.cnblogs.com/chenglixue/p/16779055.html

相关文章

  • leetcode-394.字符串解码
    394.字符串解码publicStringdecodeString(Strings){Stack<Character>stack=newStack<>();for(charc:s.toCharArray()){if(c......
  • Codeforces Round #825 (Div. 2) A - C
    A模拟即可。voidsolve(){intn;cin>>n;vector<int>a(n),b(n);intcnt1=0,cnt2=0;for(inti=0;i<n;i++){cin>>a[i];......
  • leetcode 785. Is Graph Bipartite判断二分图 (中等)
    一、题目大意存在一个无向图,图中有n个节点。其中每个节点都有一个介于0到n-1之间的唯一编号。给你一个二维数组graph,其中graph[u]是一个节点数组,由节点u......
  • 在 macOS 中用 gcc 替换 clang 作为 VSCode 编译器
    众所周知,macOS下的默认C/C++编译器是clang/clang++而非gcc/g++,尽管在大部分情况下或许难以察觉其中的区别,但偶尔我们会需要用到gcc中的一些函数等等,因此改用VSCod......
  • VSCode 插件 vsix格式文件 离线安装
    场景 有些时候内网不能上网,则需要从共享目录直接安装下载好的vsix格式文件一、假设已经有了vsix离线文件(下载vsix暂不了解,后抽空补)二、文件放在vscode的安装目录......
  • Leetcode 33 -- 二分查找&&归约思想
    题目描述搜索旋转排序数组思路思路来源一个清晰的思路:这道题和平常二分法查找的不同就在于,把一个有序递增的数组分成了,两个递增的数组,我们需要做的就是判断这个......
  • vscode如何链接git远程仓库gitee或github
    vscode如何链接git远程仓库gitee或githubhttps://blog.csdn.net/G_C_H/article/details/1206732271.在GitHub上创建新的仓库2.生成SSH密钥开启GitBash命令行中输......
  • ESP32开发环境搭建 IDF3.3.5+VScode
    1、 软件准备:①ESP-IDF:包含ESP32API和用于操作工具链的脚本。②工具链msys32:用于编译ESP32应用程序。③编辑工具VisualStudioCode  注意:工具链和ESP-IDF需......
  • leetcode-128. 最长连续序列
    128.最长连续序列首先去重,直接把数组装入set集合即可然后,设集合中的某个数为a。遍历集合set假如这个集合中,存在a-1,说明a不是一个序列的起始值,跳过如果不存在a......
  • Win10 环境下 vscode 没法在终端使用 conda activate 命令来更换 Python 环境的解决方
    在vscode上激活conda镜像如报下面错误:CommandNotFoundError:Yourshellhasnotbeenproperlyconfiguredtouse'condaactivate'.Ifusing'condaactivate'fr......