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

【代码随想录】刷题Day2

1.左右指针比大小

 977. 有序数组的平方

class Solution {
public:vector<int> sortedSquares(vector<int>& nums) {vector<int> ret = nums;int left = 0;int right = nums.size()-1;int end = nums.size();while(left<=right){if(abs(nums[left])>abs(nums[right])){ret[--end]=nums[left]*nums[left];left++;}else{ret[--end]=nums[right]*nums[right];right--;}}return ret;}
};

1.由于其数组本身的特性,两边的绝对值大,中间的小;说明其实数组可以由两边向中间走

2.由此,我们想到了左右指针,不过在遍历时要确定区间范围

3.定义一个vector ret存储平方数

3.比较哪个的绝对值大,哪个就被去拿去填入ret的左边往右边位置

2.滑动窗口

209. 长度最小的子数组

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

1.两层循环嘛,最简单的暴力遍历,非说要哪里注意的话,也就sum记得在每次重新开始前置为零

2.不过,这个代码leedcode跑不过,原因就是太暴力了,O(N^2)的时间复杂度不过呢

3.仔细分析一下为什么我们浪费了这么多的时间:仔细想想其实很简单,就是我们站得角度是顺序思考的,不就是求解嘛,一个一个对过去,这种思想使得我们不需要考虑直接暴力遍历;此时我们需要逆转一下思维(異議あり!,不好意思幽默一下),如果我们站在已经得到某个数组的条件满足要求,那么我们只需要去判断到底怎么样更小就行

转个场~

 滑动窗口

思想:

1.我们是通过两个下标i和j确定区间的,但是我们首先要做的不再是遍历去凑满足大于等于target的数组;而是先去得到一个满足要求的区间比较大的数组,随后去减小其区间更新返回值

2.因为说先得到个满足要求区间比较大的数组,所以i不动,j先往前,sum得到大于等于target,返回区间,随后走i,找到这么个比较大的数组里适合的最小区间。随后j继续往前走,i根据sum是否还满足要求在进行缩减

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

分析:

这个的时间复杂度是O(N),因为j了全长,限制了其量级,就算i也走完了全长,也就是N->2N而已。

3.讨厌的循环

59. 螺旋矩阵 II

c++这个vector<vector<int>>我构造了十来分钟,烦得很。

注意是:vector<vector<int>> ret(n, vector<int>(n, 0))

它不像数组弄个[]就能出来,需要去调用构造函数,个数和需要的数据构造

这里两个方法都可以,不过后面那个的i和j更需要看范围

class Solution {
public:vector<vector<int>> generateMatrix(int n) {int i = 0;int j = n-1;int k = 0;int num = 0;vector<vector<int>> ret(n, vector<int>(n, 0));while(i<=j){k=i;while(k<=j-1)ret[i][k++]=(++num);k=i;while(k<=j-1)ret[k++][j]=(++num);k=j;while(k>=i+1)ret[j][k--]=(++num);k=j;while(k>=i+1)ret[k--][i]=(++num);i++;j--;}if(n%2==1){ret[(n-1)/2][(n-1)/2]=(++num);}return ret;}
};

相关文章:

【代码随想录】刷题Day2

1.左右指针比大小 977. 有序数组的平方 class Solution { public:vector<int> sortedSquares(vector<int>& nums) {vector<int> ret nums;int left 0;int right nums.size()-1;int end nums.size();while(left<right){if(abs(nums[left])>abs…...

Python机器学习、深度学习技术提升气象、海洋、水文领域实践应用

Python是功能强大、免费、开源&#xff0c;实现面向对象的编程语言&#xff0c;在数据处理、科学计算、数学建模、数据挖掘和数据可视化方面具备优异的性能&#xff0c;这些优势使得Python在气象、海洋、地理、气候、水文和生态等地学领域的科研和工程项目中得到广泛应用。可以…...

计及调度经济性的光热电站储热容量配置方法【IEEE30节点】(Matlab代码实现)

&#x1f4a5; &#x1f4a5; &#x1f49e; &#x1f49e; 欢迎来到本博客 ❤️ ❤️ &#x1f4a5; &#x1f4a5; &#x1f3c6; 博主优势&#xff1a; &#x1f31e; &#x1f31e; &#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 …...

“不要放过这个春天”解锁品牌春日宣传新玩法

在万物复苏的春天&#xff0c;人们换新装、踏青等需求蓄势待发&#xff0c;出现了全民消费热情高涨的趋势&#xff0c;让品牌「贩卖春天」的宣传此起彼伏。 品牌洞察到用户的消费需求&#xff0c;打造具有品牌特色的浪漫宣传&#xff0c;如采用春日限定元素、创新春天宣传场景…...

利用GPT2 预测 福彩3d预测

使用GPT2预测福彩3D项目 个人总结彩票数据是随机的,可以预测到1-2个数字,但是有一两位总是随机的 该项目紧做模型学习用,通过该项目熟练模型训练调用生成过程. 福彩3D数据下载 https://www.17500.cn/getData/3d.TXT data数据格式 处理后数据格式 每行 2023 03 08 9 7 3 训…...

类加载过程

基本说明 反射机制是Java实现动态语言的关键&#xff0c;也就是通过反射实现类动态加载。 静态加载&#xff1a;编译时加载相关的类&#xff0c;如果没有则报错&#xff0c;依赖性太强动态加载&#xff1a;运行时加载需要的类&#xff0c;如果运行时不用该类&#xff0c;即使…...

【C/C++】C++11 无序关联容器的诞生背景

文章目录 背景无序关联容器适用场景有序关联容器适用场景 背景 C11 引入了无序关联容器&#xff08;unordered_map、unordered_set、unordered_multimap 和 unordered_multiset&#xff09;是为了提供一种高效的元素存储和查找方式。相比于有序关联容器&#xff08;map、set、…...

h264编码原理

在介绍编码器原理之前首先了解三个制定编码标准的组织&#xff1a; 1.国际电信联盟(ITU-T)&#xff0c;这是一个音视频领域非常强的组织&#xff0c;规定了很多标准如h261&#xff0c;h262&#xff0c;h263&#xff0c;h263。h263也就是h264的前身。 2.国际标准化组织(ISO)&…...

网络工程师经常搞混的路由策略和策略路由,两者到底有啥区别?

当涉及到网络路由时&#xff0c;两个术语经常被混淆&#xff1a;策略路由和路由策略。虽然这些术语听起来很相似&#xff0c;但它们实际上有着不同的含义和用途。在本文中&#xff0c;我们将详细介绍这两个术语的区别和应用。 一、路由策略 路由策略是指一组规则&#xff0c;用…...

高精度气象模拟软件WRF实践技术

【原文链接】&#xff1a;高精度气象模拟软件WRF(Weather Research Forecasting)实践技术及案例应用https://mp.weixin.qq.com/s?__bizMzU5NTkyMzcxNw&mid2247538149&idx3&sn3890c3b29f34bcb07678a9dd4b9947b2&chksmfe68938fc91f1a99bbced2113b09cad822711e7f…...

总结827

学习目标&#xff1a; 4月&#xff08;复习完高数18讲内容&#xff0c;背诵21篇短文&#xff0c;熟词僻义300词基础词&#xff09; 学习内容&#xff1a; 高等数学&#xff1a;刷1800&#xff0c;做了26道计算题&#xff0c;记录两道错题&#xff0c;搞懂了&#xff0c;但并不…...

还在发愁项目去哪找?软件测试企业级Web自动化测试实战项目

今天给大家分享一个简单易操作的实战项目&#xff08;已开源&#xff09; 项目名称 ET开源商场系统 项目描述 ETshop是一个电子商务B2C电商平台系统&#xff0c;功能强大&#xff0c;安全便捷。适合企业及个人快速构建个性化网上商城。 包含PCIOS客户端Adroid客户端微商城…...

总结下Spring boot异步执行逻辑的几种方式

文章目录 概念实现方式Thread说明 Async注解说明 线程池CompletableFuture&#xff08;Future及FutureTask&#xff09;创建CompletableFuture异步执行 消息队列 概念 异步执行模式&#xff1a;是指语句在异步执行模式下&#xff0c;各语句执行结束的顺序与语句执行开始的顺序…...

【开发日志】2023.04 ZENO----Composite----CompNormalMap

NormalMap-Online (cpetry.github.io)https://cpetry.github.io/NormalMap-Online/ CompNormalMap 将灰度图像转换为法线贴图 将灰度图像转换为法线贴图是一种常见的技术&#xff0c;用于在实时图形渲染中增加表面细节。下面是一个简单的方法来将灰度图像转换为法线贴图&…...

春秋云境:CVE-2022-28525 (文件上传漏洞)

目录 一、题目 1.登录 2.burp抓包改包 3.蚁剑获取flag 一、题目 ED01CMSv20180505存在任意文件上传漏洞 英语不够 翻译来凑&#xff1a; 点击其他页面会Not Found 找不到&#xff1a; 先登录看看吧&#xff1a; 试试万能密码&#xff1a;admin&#xff1a;123 发现错误…...

【软件测试二】开发模型和测试模型,BUG概念篇

目录 1.软件的生命周期 2.瀑布模型 3.螺旋模型 4.增量&#xff0c;迭代 5.敏捷---scrum 1. 敏捷宣言 2.角色 6. 软件测试v模型 7.软件测试w模型 8.软件测试的生命周期 9.如何描述一个BUG 10.如何定义BUG的级别 11.BUG的生命周期 12.产生争执怎么办 1.软件的生命周期…...

短视频app开发:如何实现视频直播功能

短视频源码的实现 在短视频app开发中&#xff0c;实现视频直播功能需要借助短视频源码。短视频源码可以提供一个完整的视频直播功能模块&#xff0c;包括视频采集、编码、推流等。因此&#xff0c;我们可以选择一些开源的短视频源码&#xff0c;例如LFLiveKit、ijkplayer等&am…...

[架构之路-174]-《软考-系统分析师》-5-数据库系统-7-数据仓库技术与数据挖掘技术

5 . 7 数据仓库技术 数据仓库是一个面向主题的、集成的、相对稳定的、反映历史变化的数据集合&#xff0c;用于支持管理决策。近年来&#xff0c;人们对数据仓库技术的关注程度越来越尚&#xff0c;其原因是过去的几十年中&#xff0c;建设了无数的应用系统&#xff0c;积累了…...

销售高品质 FKM EPDM NBR 硅胶 O 形密封圈

O形圈常用于各种行业&#xff0c;包括汽车、航空航天和制造业。它们是由不同材料制成的圆环&#xff0c;用于将两个或多个组件密封在一起。用于制造O形圈的材料是决定其有效性和耐用性的重要因素。在本文中&#xff0c;我们将讨论用于制作O形圈的不同类型的材料。 1.丁腈橡胶(…...

Linux环境变量:不可或缺的系统组成部分

目录标题 引言&#xff08;Introduction&#xff09;Linux环境变量的概念&#xff08;Concept of Linux Environment Variables&#xff09;环境变量的作用与重要性&#xff08;Roles and Importance of Environment Variables&#xff09; Linux环境变量基础&#xff08;Linux…...

IDEA运行Tomcat出现乱码问题解决汇总

最近正值期末周&#xff0c;有很多同学在写期末Java web作业时&#xff0c;运行tomcat出现乱码问题&#xff0c;经过多次解决与研究&#xff0c;我做了如下整理&#xff1a; 原因&#xff1a; IDEA本身编码与tomcat的编码与Windows编码不同导致&#xff0c;Windows 系统控制台…...

Zustand 状态管理库:极简而强大的解决方案

Zustand 是一个轻量级、快速和可扩展的状态管理库&#xff0c;特别适合 React 应用。它以简洁的 API 和高效的性能解决了 Redux 等状态管理方案中的繁琐问题。 核心优势对比 基本使用指南 1. 创建 Store // store.js import create from zustandconst useStore create((set)…...

Android第十三次面试总结(四大 组件基础)

Activity生命周期和四大启动模式详解 一、Activity 生命周期 Activity 的生命周期由一系列回调方法组成&#xff0c;用于管理其创建、可见性、焦点和销毁过程。以下是核心方法及其调用时机&#xff1a; ​onCreate()​​ ​调用时机​&#xff1a;Activity 首次创建时调用。​…...

QT3D学习笔记——圆台、圆锥

类名作用Qt3DWindow3D渲染窗口容器QEntity场景中的实体&#xff08;对象或容器&#xff09;QCamera控制观察视角QPointLight点光源QConeMesh圆锥几何网格QTransform控制实体的位置/旋转/缩放QPhongMaterialPhong光照材质&#xff08;定义颜色、反光等&#xff09;QFirstPersonC…...

群晖NAS如何在虚拟机创建飞牛NAS

套件中心下载安装Virtual Machine Manager 创建虚拟机 配置虚拟机 飞牛官网下载 https://iso.liveupdate.fnnas.com/x86_64/trim/fnos-0.9.2-863.iso 群晖NAS如何在虚拟机创建飞牛NAS - 个人信息分享...

适应性Java用于现代 API:REST、GraphQL 和事件驱动

在快速发展的软件开发领域&#xff0c;REST、GraphQL 和事件驱动架构等新的 API 标准对于构建可扩展、高效的系统至关重要。Java 在现代 API 方面以其在企业应用中的稳定性而闻名&#xff0c;不断适应这些现代范式的需求。随着不断发展的生态系统&#xff0c;Java 在现代 API 方…...

DAY 26 函数专题1

函数定义与参数知识点回顾&#xff1a;1. 函数的定义2. 变量作用域&#xff1a;局部变量和全局变量3. 函数的参数类型&#xff1a;位置参数、默认参数、不定参数4. 传递参数的手段&#xff1a;关键词参数5 题目1&#xff1a;计算圆的面积 任务&#xff1a; 编写一…...

[USACO23FEB] Bakery S

题目描述 Bessie 开了一家面包店! 在她的面包店里&#xff0c;Bessie 有一个烤箱&#xff0c;可以在 t C t_C tC​ 的时间内生产一块饼干或在 t M t_M tM​ 单位时间内生产一块松糕。 ( 1 ≤ t C , t M ≤ 10 9 ) (1 \le t_C,t_M \le 10^9) (1≤tC​,tM​≤109)。由于空间…...

Python常用模块:time、os、shutil与flask初探

一、Flask初探 & PyCharm终端配置 目的: 快速搭建小型Web服务器以提供数据。 工具: 第三方Web框架 Flask (需 pip install flask 安装)。 安装 Flask: 建议: 使用 PyCharm 内置的 Terminal (模拟命令行) 进行安装,避免频繁切换。 PyCharm Terminal 配置建议: 打开 Py…...

RabbitMQ 各类交换机

为什么要用交换机&#xff1f; 交换机用来路由消息。如果直发队列&#xff0c;这个消息就被处理消失了&#xff0c;那别的队列也需要这个消息怎么办&#xff1f;那就要用到交换机 交换机类型 1&#xff0c;fanout&#xff1a;广播 特点 广播所有消息​​&#xff1a;将消息…...