当前位置: 首页 > news >正文

【代码随想录】算法训练营 第二天 第一章 数组 Part 2

977. 有序数组的平方

题目

暴力解法

思路

原地更新所有数组元素为其平方数后,再使用sort函数排序,对vector使用sort函数时,两个参数分别是vector的起始元素和终止元素。

代码

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

双指针法

思路

从题目中我们可以知道,数组元素有正有负,从小到大排序,但是平方以后,元素大小的分布就变成了两边大中间小;

基于此,我们使用双指针法来代替sort函数,双指针在归并排序里就用到了,但在这里,两个指针不是指着两个数组,而是指着输入数组的两端,每次比较两端元素的大小,将较大元素放在新数组里(新数组用vector定义一个和原数组内容一样的,新数组的指针每次向左移动一位),然后指针向内移动一位,直到两个指针相遇。

代码

class Solution {
public:vector<int> sortedSquares(vector<int>& nums) {int i = 0, j = nums.size() - 1, k = nums.size() - 1;vector<int> num = nums;while (i <= j) {if(fabs(nums[i]) >= fabs(nums[j]))num[k--] = nums[i] * nums[i++];elsenum[k--] = nums[j] * nums[j--];}return num;}
};

209. 长度最小的子数组

http://www.lryc.cn/news/191503.html

相关文章:

  • 在深度学习中,累计不同批次的损失估计总体损失
  • 论文导读|八月下旬Operations Research文章精选:定价问题专题
  • (三)Apache log4net™ 手册 -演示
  • VScode远程root权限调试
  • 【ARM CoreLink 系列 7 -- TZC-400控制器简介】
  • 【C++】-c++11的知识点(中)--lambda表达式,可变模板参数以及包装类(bind绑定)
  • 浅析倾斜摄影三维模型(3D)几何坐标精度偏差的几个因素
  • 【广州华锐互动】智轨列车AR互动教学系统
  • 驾驶数字未来:汽车业界数字孪生技术的崭新前景
  • JVM 性能调优参数
  • 11在SpringMVC中响应到浏览器的数据格式,@ResponseBody注解和@RestController复合注解的功能详解
  • go 流程控制之switch 语句介绍
  • sql 时间有偏差的解决方法
  • Apache Lucene 7.0 - 索引文件格式
  • GEE:使用中文做变量和函数名写GEE代码
  • 针对量化交易SDK的XTP的初步摸索
  • Unity编辑器从PC平台切换到Android平台下 Addressable 加载模型出现粉红色,类似于材质丢失的问题
  • CSS 边框
  • Docker逃逸---CVE-2020-15257浅析
  • Python学习 day03(注意事项)
  • vue中的生命周期有什么,怎么用
  • 论文阅读:ECAPA-TDNN
  • 【Unity】【VR】详解Oculus Integration输入
  • vue axios封装
  • oracle、mysql、postgresql数据库的几种表关联方法
  • 什么是UML UML入门到放弃系列
  • vue3 + element Plus实现表格根据关键字合并行,并实现行的增删改操作
  • c++视觉处理---直方图均衡化
  • 【LeetCode】2.两数相加
  • 蜘蛛飞机大战