NO.2 | 977.有序数组的平方 ,209.长度最小的子数组 ,59.螺旋矩阵II

NO.2 | 977.有序数组的平方 ,209.长度最小的子数组 ,59.螺旋矩阵II

题目链接:977.有序数组的平方

  • 前置条件:数组是非递减的,如果是乱序的数组应该就只能暴力解法
  • 暴力解法:直接遍历,对每个元素都进行平方,然后对平方后的结果进行排序。但这样就没有使用上非递减这个条件
class Solution {
public:vector<int> sortedSquares(vector<int>& nums) {for(int i = 0; i < nums.size(); ++i){nums[i] = nums[i] * nums[i];}std::sort(nums.begin(), nums.end());return nums;}
};
  • 双指针法:平方后数据的大小顺序与求绝对值的顺序一样,大的在头尾,中间的是小数。因此可以头尾各一个指针,对比绝对值大小,然后排序,时间复杂度O(n)
class Solution {
public:vector<int> sortedSquares(vector<int>& nums) {vector<int> res;int left = 0;int right = nums.size() - 1;while(left <= right){if(abs(nums[left]) < abs(nums[right])){res.push_back(nums[right] * nums[right]);right -= 1;}else if(abs(nums[left]) > abs(nums[right])){res.push_back(nums[left] * nums[left]);left += 1;}else{if(left == right){// [-4,-1,0,3,10] left == right == 2,指向同一个位置的情况res.push_back(nums[left] * nums[left]);break;}else{// [-7,-3,2,3,11] -3和3的平方相等的情况res.push_back(nums[left] * nums[left]);res.push_back(nums[right] * nums[right]);left += 1;right -= 1;}}}reverse(res.begin(), res.end());return res;}
};

题目链接:977. 有序数组的平方
解题思路:我认为实际上是对暴力解法的优化,暴力解法使用两层for循环,该解法把第二层for循环改成了while,只有在必要的时候更新滑动窗口的起始位置
参考链接:https://www.bilibili.com/video/BV1tZ4y1q7XE/?vd_source=8b0f76da42173279a0e6f135870b47a0

class Solution {
public:int minSubArrayLen(int target, vector<int>& nums) {int res = nums.size() + 1;int sum = 0;int begin = 0;for(int i = 0; i < nums.size(); ++i){sum += nums[i];// 使用while是考虑[1, 1, 1, 1, 100], target=100的情况while(sum >= target){// 更新最小长度res = min(res, i - begin + 1);sum -= nums[begin];begin += 1;}}return (res == nums.size() + 1) ? 0 : res;}
};

题目链接:59. 螺旋矩阵 II
解题思路:该题没有什么技巧,按照题意写代码即可,注意矩阵的边界不要乱。还有就是当n为奇数时,中间的一个元素要单独赋值。
参考讲解链接:https://programmercarl.com/0059.%E8%9E%BA%E6%97%8B%E7%9F%A9%E9%98%B5II.html#%E6%80%9D%E8%B7%AF

class Solution {
public:vector<vector<int>> generateMatrix(int n) {vector<int> vec(n, 0);vector<vector<int>> res(n, vec);int left = 0;int right = n-1;int top = 0;int down = n-1;int index = 0;while(left <= right){for(int x = left; x < right; ++x){index += 1;res[top][x] = index;}for(int y = top; y < down; ++y){index += 1;res[y][right] = index;}for(int x_ = right; x_ > left; --x_){index += 1;res[down][x_] = index;}for(int y_ = down; y_ > top;--y_){index += 1;res[y_][left] = index;}// 中间元素if(left == right){index += 1;res[left][top] = index;}// 缩圈left += 1;right -= 1;top += 1;down -= 1;}return res;}
};

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

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

相关文章

与AI对话,如何写好prompt?

玩转AIGC&#xff0c;优质的Prompt提示词实在是太重要了&#xff01;同样的问题&#xff0c;换一个问法&#xff0c;就会得到差别迥异的答案。你是怎样和AI进行对话交流的呢&#xff1f;我来分享几个&#xff1a; 请告诉我…我想知道…对于…你有什么看法&#xff1f;帮我解决…

腾讯云学生专享云服务器介绍及购买攻略

随着互联网技术的不断发展&#xff0c;越来越多的人开始关注云计算领域。作为国内领先的云计算服务商&#xff0c;腾讯云推出了“云校园”扶持计划&#xff0c;完成学生认证即可购买学生专享云服务器。 一、活动对象 仅限腾讯云官网通过个人认证的35岁以下学生用户参与&#x…

初识Node.js开发

一、Node.js是什么 1.node.js是什么 官方对Node.js的定义&#xff1a; Node.js是一个基于V8 JavaScript引擎的JavaScript运行时环境。 也就是说Node.js基于V8引擎来执行JavaScript的代码&#xff0c;但是不仅仅只有V8引擎&#xff1a; 前面我们知道V8可以嵌入到任何C 应用…

PULP Ubuntu18.04

1. 安装eda工具&#xff1a;questasim_10.7_linux64&#xff0c;网上有教程和方法&#xff0c;如有问题&#xff0c;可私信我 2. 代码下载&#xff1a; git clone https://github.com/pulp-platform/pulp 编译代码 cd pulp source setup/vsim.sh make checkout make scripts …

解决 Element-ui中 表格(Table)使用 v-if 条件控制列显隐时数据展示错乱的问题

本文 Element-ui 版本 2.x 问题 在 el-table-column 上需根据不同 v-if 条件来控制列显隐时&#xff0c;就会出现列数据展示错乱的情况&#xff08;要么 A 列的数据显示在 B 列上&#xff0c;或者后端返回有数据的但是显示的为空&#xff09;&#xff0c;如下所示。 <tem…

vue中使用xlsx插件导出多sheet excel实现方法

安装xlsx&#xff0c;一定要注意版本&#xff1a; npm i xlsx0.17.0 -S package.json&#xff1a; {"name": "hello-world","version": "0.1.0","private": true,"scripts": {"serve": "vue-c…

【Kotlin精简】第5章 简析DSL

1 DSL是什么&#xff1f; Kotlin 是一门对 DSL 友好的语言&#xff0c;它的许多语法特性有助于 DSL 的打造&#xff0c;提升特定场景下代码的可读性和安全性。本文将带你了解 Kotlin DSL 的一般实现步骤&#xff0c;以及如何通过 DslMarker &#xff0c; Context Receivers 等…

[UDS] --- DiagnosticSessionControl 0x10 service

1 会话 $10包含3个子功能&#xff0c;01 Default默认会话&#xff0c;02 Programming编程会话&#xff0c;03 Extended扩展会话&#xff0c;ECU上电时&#xff0c;进入的是默认会话&#xff08;Default&#xff09;。 为什么设计三个会话模式呢&#xff1f;因为权限问题。默认…

FreeRTOS学习2018.6.27

《FreeRTOS学习》 1.freeRTOS基本功能函数&#xff1a; 定义任务&#xff1a;ATaskFunction(); 创建任务&#xff1a;xTaskCreate(); 改优先级&#xff1a;vTaskPrioritySet(); 系统延时&#xff1a;vTaskDelay(); 精确延时&#xff1a;vTaskDelayUntil(); 空闲任务钩子函数&…

CSS高级的详细解析

CSS高级 目标&#xff1a;掌握定位的作用及特点&#xff1b;掌握 CSS 高级技巧 01-定位 作用&#xff1a;灵活的改变盒子在网页中的位置 实现&#xff1a; 1.定位模式&#xff1a;position 2.边偏移&#xff1a;设置盒子的位置 left right top bottom 相对定位 posit…

【计算机网络(1)】计算机网络体系结构1:计算机网络概述

文章目录 概念 & 功能 & 发展计算机网络的概念计算机网络的功能计算机网络的发展网络的本质 组成 & 分类计算机网络的组成计算机网络的分类 概念 & 功能 & 发展 计算机网络的概念 1. 网络 网一样的东西或网状系统。其中&#xff08;有线电视网络、电信网…

34基于MATLAB的杨氏双孔干涉条纹,可调节距离,孔的大小等参数,程序已调试通过,可直接运行。

基于MATLAB的杨氏双孔干涉条纹&#xff0c;可调节距离&#xff0c;孔的大小等参数&#xff0c;程序已调试通过&#xff0c;可直接运行。 34matlab杨氏双孔干涉条纹GUI (xiaohongshu.com)

(ubuntu)安装nginx

文章目录 前言回顾Linux命令在线安装&#xff1a;相关命令&#xff1a;相关路径常用配置&#xff1a; 卸载nginxbug相关: 前言 提示&#xff1a;别再问我的规划是什么了&#xff1a;呼吸&#xff0c;难道不算一个吗&#xff1f; --E.M齐奥朗 回顾Linux命令 # 查看当前进程的所…

hive sql,年月日 时分秒格式的数据,以15分钟为时间段,找出每一条数据所在时间段的上下界限时间值(15分钟分区)

获取当前的年月日 时分秒 select date_format(current_timestamp(), yyyy-MM-dd HH:mm:ss)date_format(时间字段, ‘yyyy-MM-dd HH:mm:ss’) 将时间字段转为 2023-10-18 18:14:16 这种格式 在指定时间上增加15分钟 select from_unixtime(unix_timestamp(current_timestamp(…

JavaScript设计模式快速参考指南

揭开 JavaScript 设计模式秘密的旅程&#xff0c;探索它们的意义、实现和实际应用。 创建模式是一种设计模式类别&#xff0c;用于解决与对象创建情况相关的常见问题。 1、单例模式 将特定对象的实例数量限制为一个。单例减少了对全局变量的需求&#xff0c;从而避免了名称冲…

Go语言入门心法(十三): 反射认知升维

Go语言入门心法(一): 基础语法 Go语言入门心法(二): 结构体 Go语言入门心法(三): 接口 Go语言入门心法(四): 异常体系 Go语言入门心法(五): 函数 Go语言入门心法(六): HTTP面向客户端|服务端编程 Go语言入门心法(七): 并发与通道 Go语言入门心法(八): mysql驱动安装报错o…

Win安装protobuf和IDEA使用protobuf插件

一、Win安装protobuf 1、下载编译器 protobuf下载地址&#xff1a;https://github.com/protocolbuffers/protobuf/releases 选择自己需要的版本下载&#xff0c;这里下载的是 protoc-3.19.1-win64.zip&#xff0c;下载之后进行解压即可。 2、配置环境变量 path 系统变量中添加…

分布式、集群、微服务

分布式是以缩短单个任务的执行时间来提升效率的&#xff1b;而集群则是通过提高单位时间内执行的任务数来提升效率。 分布式是指将不同的业务分布在不同的地方。 集群指的是将几台服务器集中在一起&#xff0c;实现同一业务。 分布式中的每一个节点&#xff0c;都可以做集群…

RT-Thread 7. RT-Thread Studio ENV修改MCU型号

1. 修改MCU型号 2.在ENV界面输入 scons -c scons --dist3. dist下为更新后完整源代码 4.导入RT-Thread Studio 发现GD32F330已经生效了。 5. 自己编写startup_gd32f3x0.S&#xff0c;准确性待验证 ;/* ; * Copyright (c) 2006-2021, RT-Thread Development Team ; * ; * SPD…

如何将Mysql数据库的表导出并导入到另外的架构

如何将Mysql数据库的表导出并导入到另外的架构 准备一、解决方法1.右键->导出->用mysqldump导出2.注意路径一般为&#xff1a;C:/Program Files/MySQL/MySQL Server 8.0/bin/mysqldump.exe和导出的sql文件位置3.右键->SQL脚本->运行SQL脚本4.找到SQL脚本并点击确定…