代码随想录二刷——数组day2

文章目录

  • 前言
    • 数组知识点
  • 一、 977. 有序数组的平方
  • 二、209. 长度最小的子数组
  • 三、59. 螺旋矩阵 II
  • 总结


前言

一个本硕双非的小菜鸡,备战24年秋招,计划二刷完卡子哥的刷题计划,加油!
二刷决定精刷了,于是参加了卡子哥的刷题班,训练营为期60天,我一定能坚持下去,迎来两个月后的脱变的,加油!
推荐一手卡子哥的刷题网站,感谢卡子哥。代码随想录

数组知识点

数组是存放在连续内存空间上的相同类型数据的集合。
数组下标都是从0开始的。
数组内存空间的地址是连续的。二维数组一样如此。
因为数组的在内存空间的地址是连续的,所以我们在删除或者增添元素的时候,就难免要移动其他元素的地址。数组的元素是不能删的,只能覆盖。
vector的底层实现是array,严格来讲vector是容器,不是数组。

一、 977. 有序数组的平方

977. 有序数组的平方
Note:暴力解题

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

Note:双指针,新建数组从尾至头塞数

class Solution {
public:vector<int> sortedSquares(vector<int>& nums) {int size = nums.size() - 1;vector<int> result(size + 1, 0);for (int i = 0, j = nums.size() - 1; i <= j;) {if (nums[i] * nums[i] < nums[j] * nums[j]) {result[size--] = nums[j] * nums[j];j--;} else {result[size--] = nums[i] * nums[i];i++;}}return result;}
};

二、209. 长度最小的子数组

209. 长度最小的子数组

Note:暴力/滑动窗口
暴力(会超时):

class Solution {
public:int minSubArrayLen(int target, vector<int>& nums) {int result = INT32_MAX;int sum = 0;int length = 0;for (int i = 0; i < nums.size(); i++) {sum = 0;for (int j = i; j < nums.size(); j++) {sum += nums[j];if (sum >= target) {length = j - i + 1;result = result < length ? result : length;break;}}}return result == INT32_MAX ? 0 : result;}
};

滑动窗口,其实也是一种双指针

class Solution {
public:int minSubArrayLen(int target, vector<int>& nums) {int result = INT32_MAX;int sum = 0;int length = 0;for (int i = 0, j = 0; j < nums.size(); j++) {sum += nums[j];while (sum >= target) {length = j - i + 1;result = result < length ? result : length;sum -= nums[i++];}}return result == INT32_MAX ? 0 : result;}
};

三、59. 螺旋矩阵 II

59. 螺旋矩阵 II

Note:模拟大法好

class Solution {
public:int minSubArrayLen(int target, vector<int>& nums) {int result = INT32_MAX;int sum = 0;int length = 0;for (int i = 0; i < nums.size(); i++) {sum = 0;for (int j = i; j < nums.size(); j++) {sum += nums[j];if (sum >= target) {length = j - i + 1;result = result < length ? result : length;break;}}}return result == INT32_MAX ? 0 : result;}
};

总结

写二分法经常写乱,主要是因为对区间的定义没有想清楚,区间的定义就是不变量。要在二分查找的过程中,保持不变量,就是在while寻找中每一次边界的处理都要坚持根据区间的定义来操作,这就是循环不变量规则。
写二分法,区间的定义一般为两种,左闭右闭即[left, right],或者左闭右开即[left, right)。

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

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

相关文章

【Linux】糟糕,是心动的感觉——与Linux的初次相遇

初识Linux 导言一、计算机的发展1.1 历史背景1.2 计算机的发明 二、操作系统2.1 什么是操作系统&#xff1f;2.2 操作系统的诞生2.3 操作系统的发展2.3.1 批处理系统的发展2.3.2 分时系统2.3.3 实时系统2.3.4 通用操作系统 2.4 UNIX操作系统2.4.1 UNIX的诞生2.4.2 UNIX的发展 2…

开源 C/C++(DuckX)操作docx文旦

目录 1.详情 2.项目示例 1.详情 创建、读取和写入 Microsoft Office Word docx 文件&#xff0c;可以不使用Microsoft Office组件。目前看操作docx文件绕不开Microsoft Office组件&#xff0c;虽然本项目可以读取docx文档&#xff0c;但是里面排版都消失了&#xff0c;除此之…

Mysql的基本操作详解

当涉及到MySQL数据库的基本操作时&#xff0c;我们通常会涉及到创建数据库、创建表格、插入数据、查询数据等操作。下面是一个简要的MySQL基本操作的博客&#xff1a; --- MySQL基本操作详解 MySQL是一个广泛使用的关系型数据库管理系统&#xff0c;为许多应用程序提供了可靠…

BP神经网络需要像深度学习一次次的迭代训练吗?

BP神经网络 答案&#xff1a;是的&#xff0c;BP神经网络需要像深度学习一次次的迭代训练。总结&#xff08;BP神经网络和深度学习在本质上有以下区别&#xff09; 答案&#xff1a;是的&#xff0c;BP神经网络需要像深度学习一次次的迭代训练。 BP神经网络&#xff08;误差反…

2024.1.24 GNSS 学习笔记

1.伪距观测值公式 2.载波相位观测值公式 3.单点定位技术(Single Point Positionin, SPP) 仅使用伪距观测值&#xff0c;不使用其他的辅助信息获得ECEF框架下绝对定位技术。 使用广播星历的轨钟进行定位&#xff0c;考虑到轨钟的米级精度&#xff0c;所以对于<1米的误差&…

Linux:gcc的相关知识

目录 gcc的翻译&#xff08;编译&#xff09;过程&#xff1a; 预处理&#xff1a; 条件编译&#xff1a; 编译&#xff1a; 汇编&链接&#xff1a; 什么是链接&#xff1f; 安装静态库&#xff1a; 静态库的使用&#xff1a; 动态静态的对比&#xff1a; 优缺对比…

IDEA插件(MyBatis Log Free)

引言 在Java开发中&#xff0c;MyBatis 是一款广泛使用的持久层框架&#xff0c;它简化了SQL映射并提供了强大的数据访问能力。为了更好地调试和优化MyBatis应用中的SQL语句执行&#xff0c;一款名为 MyBatis Log Free 的 IntelliJ IDEA 插件应运而生。这款插件旨在帮助开发者…

Oracle、MySQL数据库常规命令语法-简易记录(非常规持续更新)

前言:呈现的是非常基础必备命令以及常规关联语法,因涉及到不同数据库其表达都会有所区别,此篇纯属做个仓库记录更非常规持续更新,专业人士可忽略,且看且珍惜… MySQL: 关系型数据库、重点开源、支持大型规模、标准SQL数据语言、多平台多架构、高可用集群、可定制开发等等、…

Spring Cloud+SkyWalking全链路监控部署及使用分享

先了解 SkyWalking 极简入门 | Apache SkyWalking 版本&#xff1a;apache-skywalking-apm-9.7.0.tar.gz OAP服务和UI服务 apache-skywalking-java-agent-9.1.0.tgz JAVA-AGENT服务 环境&#xff1a;linux 项目&#xff1a;spring cloud 记录下碰到的问题&#xff1a; 1、s…

uni-app导航栏自定义“返回按钮”多种方法设置原生返回

方法一、 导航栏返回按钮事件 onBackPress监听页面返回,返回 event = {from:backbutton、 navigateBack} ,backbutton 表示来源是左上角返回按钮或 android 返回键;navigateBack表示来源是 uni.navigateBack;详见app、H5、支付宝小程序onBackPress() { this.back1(); …

【ASP.NET Core 基础知识】--依赖注入(DI)--生命周期和作用域

在依赖注入&#xff08;Dependency Injection&#xff0c;简称 DI&#xff09;中&#xff0c;生命周期和作用域是非常重要的概念&#xff0c;它们对于正确设计和实现软件系统具有至关重要的作用。以下是生命周期和作用域在依赖注入中重要性的详细阐述&#xff1a; 生命周期的重…

阿赵UE学习笔记——12、植物系统

阿赵UE学习笔记目录 大家好&#xff0c;我是阿赵。   继续学习虚幻引擎的用法。这次需要使用植物系统在地形上添加一些草和石头的装饰。 一、素材准备 之前介绍过&#xff0c;可以在Quixel上面获取免费的资源&#xff0c;所以我这里就下载了一些资源&#xff0c;有草和石头的…

windbg:设置断点 bp, bu, bm

bp、bu和bm命令设置一个或多个软件断点。您可以组合位置、条件和选项来设置不同类型的软件断点。 本文中的调试代码示例如下&#xff1a; #include <iostream>using namespace std;struct JKGirl{std::string name;int age;friend ostream& operator <<(ostr…

一文分清:Less、Sass、Scss、stylus,看看与css的对比

一、什么是css预处理器&#xff0c;有什么作用 CSS 预处理器是一种将预先定义的语法和功能添加到 CSS 中的工具。它们允许开发人员使用变量、嵌套规则、混合、继承等功能&#xff0c;以更高效和可维护的方式编写样式表。 CSS 预处理器的作用包括&#xff1a; 变量和计算&…

php项目中laravel框架下用postman调用接口实战总结

一.项目接口实战总结: 1.传参赋值错乱问题&#xff0c;如下&#xff1a; SQLSTATE[HY093]: Invalid parameter number (SQL: select count(*) as aggregate from cars where company_id 3345 and status ! 7 and user_id in (2148, 2060, 2061, 2432, 2136, 1970, 1987, 202…

【unity实战】实现实体子弹射击

文章目录 射击脚本新增子弹预制体子弹挂载脚本&#xff0c;实现触碰销毁子弹添加拖尾效果完结 射击脚本 public class Weapon : MonoBehaviour {public GameObject bulletPrefab; // 子弹预制体public Transform bulletSpawn; // 子弹生成位置public float bulletVelocity 30…

重构改善既有代码的设计-学习(三):重新组织数据

1、拆分变量&#xff08;Split Variable&#xff09; 有些变量用于保存一段冗长代码的运算结果&#xff0c;以便稍后使用。这种变量应该只被赋值一次。 如果它们被赋值超过一次&#xff0c;就意味它们在函数中承担了一个以上的责任。如果变量承担多个责任&#xff0c;它就应该被…

Docker容器化运行Oracle 19c数据库

产品化项目实施过程中会遇到多个私有化环境&#xff0c;并且会有独立的数据库实例&#xff0c;通常数据库实例之间存在个性化差异&#xff0c;对于在本地调试应对多个实例的情况一般可以通过PDB解决&#xff0c;对于部署一些临时环境需要的数据库相对来说使用容器化会方便一些&…

mac 修改flutter sdk配置

问题描述&#xff1a;我mac电脑上有高低2个版本的flutter sdk&#xff0c;我需要低版本sdk的项目在setting里设置了sdk版本&#xff0c;可是命令行还是提示我版本过高。 直接上解决办法&#xff1a; 打开mac终端&#xff0c;输入open -e .bash_profile&#xff0c;然后修改下…

每日OJ题_算法_二分查找①_力扣704. 二分查找

目录 二分查找算法原理 力扣704. 二分查找 解析代码 二分查找算法原理 二分查找一种效率较高的查找方法。已经有严谨的数学证明其时间复杂度是O&#xff08;logN&#xff09;&#xff0c;如果在全国14亿人口中找一个人&#xff0c;那么只需查找31次&#xff0c;但是&#xf…