【代码随想录37期】Day02 有序数组的平方、长度最小的子数组、螺旋矩阵Ⅱ(施工中)
有序数组的平方
977. 有序数组的平方 - 力扣(LeetCode)
v1.0:直接暴力 4分半做出来,用sort api
class Solution {
public:vector<int> sortedSquares(vector<int>& nums) {vector<int> result;for(int i = 0; i<nums.size();i++){result.push_back(nums[i]*nums[i]);}sort(result.begin(), result.end());return result;}
};v2.0: 13分钟
看过题解之后的做法,使用双指针,从原数组两端收缩,比较平方值大小,放入创建的新数组中
class Solution {
public:vector<int> sortedSquares(vector<int>& nums) {int begin = 0, end = nums.size()-1, i = nums.size()-1;vector<int> result(nums.size(), 0);while(begin<=end){if(nums[end]*nums[end]>=nums[begin]*nums[begin]){result[i--] = nums[end]*nums[end];end--;}else{result[i--] = nums[begin]*nums[begin];begin++;}}return result;}
};
关键点
为什么可以把等于和大于的情况放一起?
当两个数相等时,一定是相邻排列的,放在大于的情况,会优先放end,下一个数如果还想等,还是先放end,等到不相等了,要么end还在0右边,要么在0左边但是在begin右边,怎么都比begin小,所以等于时一定是相邻的。
为什么单独写一个等于的情况会错?
单独写一个等于相当于是:
else{ret[end--] = nums[right] * nums[right];ret[end--] = nums[left] * nums[left];left++;right--;}
移动两步,end有溢出的风险,例如left=right时
长度最小的子数组
209. 长度最小的子数组 - 力扣(LeetCode)
v1.0:直接暴力:超时 用时14分钟
class Solution {
public:int minSubArrayLen(int target, vector<int>& nums) {vector<int> result;result.push_back(0);for(int left = 0; left < nums.size(); left++){int sum = 0, len = 0;for(int right = left; right < nums.size(); right++){sum+=nums[right];len++;if(sum >= target){result.push_back(len);break;}}}sort(result.begin(), result.end());return result.size()>1?result[1]:result[0];}
};v2.0:使用滑动窗口 17分钟(后面11分钟在找bug...)
滑动窗口的思想其实很简单,传统暴力使用两个for循环分别控制窗口的边界
滑动窗口重点在于滑~ 所以其中一个边界是靠条件来操控的
class Solution {
public:int minSubArrayLen(int target, vector<int>& nums) {int sum = 0, len = 0,left = 0;vector<int> result;result.push_back(0);for(int right = 0; right<nums.size();right++){sum+=nums[right];len++;while(sum>=target&&left<nums.size()){result.push_back(len);sum-=nums[left++];len--;}}sort(result.begin(), result.end());return result.size()>1?result[1]:result[0];}
};v3.0:
前面使用vector有点大材小用,这里将result声明为INT32_MAX可以直接迭代
class Solution {
public:int minSubArrayLen(int target, vector<int>& nums) {int sum = 0, len = 0,left = 0,result = INT32_MAX;for(int right = 0; right<nums.size();right++){sum+=nums[right];len++;while(sum>=target&&left<nums.size()){result = len<result?len:result;sum-=nums[left++];len--;}}return result==INT32_MAX?0:result;}
};
螺旋矩阵②
59. 螺旋矩阵 II - 力扣(LeetCode)
螺旋矩阵,因为不好控制循环此时,使用while循环,然后就是模拟,比较考验基本功,核心思想就是收缩!class Solution {
public:vector<vector<int>> generateMatrix(int n) {vector<vector<int> > result(n, vector(n, 0));int startx = 0, starty = 0; // 定义每循环一个圈的起始位置int mid = n/2;int margin = 1;//收缩边界用int i, j;int count = 1;if(n %2 != 0){result[mid][mid] = n * n;}int loop = n;while(loop--){i = startx;j = starty;for(j = starty; j < n - margin;j++){result[startx][j] = count++;}for (i = startx; i<n - margin;i++){result[i][j] = count++;}for(;j > starty;j--){result[i][j] = count++;}for(;i > startx;i-- ){result[i][starty] = count++;}startx++;starty++;margin++;}return result;}
};v2.0:
重温了一下,重点还是while循环里面,然后对于奇数要单独处理
class Solution {
public:vector<vector<int>> generateMatrix(int n) {int startX = 0, startY = 0, num = 1;int step = n-1;vector<vector<int >> result(n, vector<int>(n, 0));if(n%2!=0){result[n/2][n/2] = n * n;}int loop = n / 2;while(loop--){int i,j;for(i = startY; i < step; i++){result[startX][i] = num++;}for(j = startX; j<step; j++){result[j][i] = num++;}for(;i>startY;i--){result[j][i] = num++;}for(;j>startX;j--){result[j][startY] = num++;}startX++;startY++;step--;}return result;}
};
相关文章:
【代码随想录37期】Day02 有序数组的平方、长度最小的子数组、螺旋矩阵Ⅱ(施工中)
有序数组的平方 977. 有序数组的平方 - 力扣(LeetCode) v1.0:直接暴力 4分半做出来,用sort api class Solution { public:vector<int> sortedSquares(vector<int>& nums) {vector<int> result;for(int i 0; i<…...
通俗的理解网关的概念的用途(三):你的数据包是如何到达下一层的
其实,这一章我写不好,因为这其中会涉及到一些计算和一些广播等概念,本人不善于此项。在此略述,可以参考。 每台设备的不同连接在获得有效的IP地址后,会根据IP地址的规则和掩码的规则,在操作系统和交换机&a…...
基于Springboot的校运会管理系统(有报告)。Javaee项目,springboot项目。
演示视频: 基于Springboot的校运会管理系统(有报告)。Javaee项目,springboot项目。 项目介绍: 采用M(model)V(view)C(controller)三层体系结构&a…...
USP技术提升大语言模型的零样本学习能力
大语言模型(LLMs)在零样本和少样本学习能力上取得了显著进展,这通常通过上下文学习(in-context learning, ICL)和提示(prompting)来实现。然而,零样本性能通常较弱,因为缺…...
前端安全防护实战:XSS、CSRF防御与同源策略详解(react 案例)
前端安全防护实战中,主要涉及三个方面:XSS (Cross-Site Scripting) 攻击的防御、CSRF (Cross-Site Request Forgery) 攻击的防御,以及浏览器的同源策略。以下是这三个方面的详细说明: XSS 防御详解 XSS 概述 XSS攻击是一种让攻…...
2024C题生物质和煤共热解问题的研究 详细思路
背景 随着全球能源需求的不断增长和对可再生能源的追求,生物质和煤共热解作为一种潜在的能源转化技术备受关注。生物质是指可再生能源,源自植物和动物的有机物质,而煤则是一种化石燃料。** 在共热解过程中,生物质和煤在高温和缺氧…...
智慧旅游引领未来风尚,科技助力旅行更精彩:科技的力量推动旅游业创新发展,为旅行者带来更加便捷、高效和智能的旅行服务
目录 一、引言 二、智慧旅游的概念与特点 (一)智慧旅游的概念 (二)智慧旅游的特点 三、科技推动旅游业创新发展 (一)大数据技术的应用 (二)人工智能技术的应用 (…...
十.吊打面试官系列-Tomcat优化-通过压测Tomcat调优实战
前言 上一篇文章我们讲解了一下Tomcat底层的结构和执行原理,我们需要重点去掌握的是Tomcat的高内聚低耦合的设计,以及责任链模式,以及Tomcat NIO编程模式,这些是Tomcat比较核心的点,本篇文章我们将对Tomcat的参数做一…...
JVM调优—减少FullGC
背景 最近负责了一个审批流程新项目,带领了几个小伙伴,哼哧哼哧的干了3个月左右,终于在三月底完美上线了,好消息是线上客户用的很丝滑,除了几个非常规的业务提单之外,几乎没有什么大的问题,但是…...
力扣 256. 粉刷房子 LCR 091. 粉刷房子 python AC
动态规划 class Solution:def minCost(self, costs):row, col len(costs), 3dp [[0] * col for _ in range(row 1)]for i in range(1, row 1):for j in range(col):dp[i][j] costs[i - 1][j - 1]if j 0:dp[i][j] min(dp[i - 1][1], dp[i - 1][2])elif j 1:dp[i][j] m…...
C++STL细节,底层实现,面试题04
文章目录 19. STL19.1. 序列容器19.1.1. vector19.1.1.1. 底层实现和特点19.1.1.2. 常用函数19.1.1.3. emplace_back() vs push_back() 19.1.2. array19.1.2.1. 底层实现和特点19.1.2.2. 常用函数 19.1.3. deque19.1.3.1. 底层实现和特点19.1.3.2. 常用函数 19.1.4 list19.1.4.…...
Linux查看Oracle数据库的环境变量
Linux查看Oracle数据库的环境变量 在Linux上查看Oracle数据库的环境变量,通常涉及检查当前shell会话中已设置的环境变量。这些环境变量可能包括ORACLE_HOME、ORACLE_SID、PATH(可能包含Oracle二进制文件的路径)等。 以下是几种方法来查看这…...
pg数据库学习知识要点分析-1
知识要点1 对象标识OID 在PostgreSQL内部,所有的数据库对象都通过相应的对象标识符(object identifier,oid)进行管理,这些标识符是无符号的4字节整型。数据库对象与相应oid 之间的关系存储在对应的系统目录中…...
【Web】CTFSHOW 七夕杯 题解
目录 web签到 easy_calc easy_cmd web签到 CTF中字符长度限制下的命令执行 rce(7字符5字符4字符)汇总_ctf中字符长度限制下的命令执行 5个字符-CSDN博客7长度限制直接梭了 也可以打临时文件RCE import requestsurl "http://4ae13f1e-8e42-4afa-a6a6-1076acd08211.c…...
react native 设置屏幕锁定
原生配置 android 在android/app/src/main/AndroidManifest.xml在这个文件里的入口activity里添加 android:screenOrientation"portrait" <activityandroid:name".MainActivity"android:label"string/app_name" …...
探索 IPv6 协议:互联网的新一代寻址
目录 一.概述 IPv4 的问题和 IPv6 的新特性 IPv6 协议体系 二.IPv6 寻址架构:巨大的地址空间与灵活的寻址模式 IPv6 寻址概述 地址表示方法 地址前缀与地址类型标识 单播地址 任播地址 多播地址 特殊的 IPv6 地址 IPv6 主机与路由器寻址 地址分配 三.I…...
Ubuntu意外断电vmdk损坏--打不开磁盘“***.vmdk”或它所依赖的某个快照磁盘。
背景:电脑资源管理器崩溃卡死,强行断电重启,结果虚拟机打不开了,提示打不开磁盘“***.vmdk”或它所依赖的某个快照磁盘。 删除lck文件:失败vmware-vdiskmanager修复 :提示无法修复最终用 VMFS Recovery挂载…...
202466读书笔记|《一天一首古诗词》——借问梅花何处落,风吹一夜满关山
202466读书笔记|《一天一首古诗词》——借问梅花何处落,风吹一夜满关山 上册下册 《一天一首古诗词》作者李锡琴,蛮早前加入书架的已购买书籍,这次刚好有点时间,利用起来读完。 赏析没有细看,只读了诗词部分࿰…...
如何调用本地ollama的http请求接口
http://127.0.0.1:11434/api/generate 使用http post请求,参数 { "model": "qwen", "prompt": "为什么天空是蓝色?", "stream": false } 返回结果如下: {"model": "qwen",…...
【C】190 颠倒二进制位
颠倒给定的 32 位无符号整数的二进制位。 提示: 请注意,在某些语言(如 Java)中,没有无符号整数类型。在这种情况下,输入和输出都将被指定为有符号整数类型,并且不应影响您的实现,因…...
questasim2024.1 wsl2 ubuntu22.04 安装
之前一直在 wsl 2 上用 vcs 进行仿真,但是最近想看一下覆盖率,发现破解有些问题,看不了😅。而且 vcs 老给我报错说系统不兼容,让我很是恼火。开源的 verilator 的验证逻辑又和传统的工具有一些区别,不能完全…...
从一线装维经验看,扩展式智能插座更适合多路监测与项目落地
作为一名做了12年现场电气安装与运维的一线装维人员,今天想聊聊智能插座。这些年接触过的智能插座不少,市面上的产品确实五花八门,外观、功能、结构都不一样。选择多了,对用户来说未必是好事,反而更容易挑花眼。尤其一…...
直播推流技术:突破平台限制的开发者解决方案
直播推流技术:突破平台限制的开发者解决方案 【免费下载链接】bilibili_live_stream_code 用于在准备直播时获取第三方推流码,以便可以绕开哔哩哔哩直播姬,直接在如OBS等软件中进行直播,软件同时提供定义直播分区和标题功能 项目…...
JiYuTrainer:重构教学控制逻辑的突破型技术方案
JiYuTrainer:重构教学控制逻辑的突破型技术方案 【免费下载链接】JiYuTrainer 极域电子教室防控制软件, StudenMain.exe 破解 项目地址: https://gitcode.com/gh_mirrors/ji/JiYuTrainer 构建多维度控制体系 💡 技术要点:通过内核级驱…...
BililiveRecorder工具箱深度解析:专业级FLV直播录制文件修复解决方案
BililiveRecorder工具箱深度解析:专业级FLV直播录制文件修复解决方案 【免费下载链接】BililiveRecorder 录播姬 | mikufans 生放送录制 项目地址: https://gitcode.com/gh_mirrors/bi/BililiveRecorder BililiveRecorder工具箱提供了一套完整的直播录制文件…...
3步解锁专业翻译:DeepL免费插件零成本使用全攻略
3步解锁专业翻译:DeepL免费插件零成本使用全攻略 【免费下载链接】bob-plugin-akl-deepl-free-translate **DeepL免秘钥,免启服务**,双击使用,免费无限次使用,(**新增DeepL单词查询功能**)根据网页版JavaScript加密算法逆向开发的bobplugin;所以只要官网的算法不改,…...
别再只问原理了!用Spring Cloud Gateway + Redis手把手搭建分布式令牌桶限流(附完整配置)
实战指南:Spring Cloud Gateway与Redis构建分布式令牌桶限流系统 微服务架构下,流量管控如同城市交通信号灯——没有合理的红绿灯设计,再宽阔的道路也会陷入瘫痪。最近在帮一家跨境电商平台重构网关层时,我们仅用Spring Cloud Gat…...
DataSphere Studio:企业级数据开发平台的7大核心优势与完整使用指南
DataSphere Studio:企业级数据开发平台的7大核心优势与完整使用指南 【免费下载链接】DataSphereStudio WeBankFinTech/DataSphereStudio: 是腾讯金融科技的一个数据开发平台,具有强大的数据处理,分析,可视化和机器学习功能&#…...
利用快马平台快速构建ccswitch功能演示原型,十分钟搞定交互界面
最近在做一个网络工具的小项目,需要快速验证ccswitch的核心功能原型。作为一个独立开发者,时间有限但又想做出像样的演示效果,于是尝试了InsCode(快马)平台,没想到十分钟就搞定了交互界面。这里分享一下我的实现思路和具体操作步骤…...
Qwen3-4B写作大师效果惊艳:看它如何自动校验医学术语
Qwen3-4B写作大师效果惊艳:看它如何自动校验医学术语 1. 医疗写作的痛点与AI解决方案 医疗科普写作一直面临着专业性与可读性的双重挑战。传统AI写作工具在生成医疗内容时,往往会出现术语混用、逻辑断裂、关键信息遗漏等问题。这些问题不仅影响阅读体验…...
