代码随想录算法训练营15期 Day 2 | 977.有序数组的平方 、209.长度最小的子数组 、59.螺旋矩阵II 、总结

news2024/11/23 23:20:02

977.有序数组的平方 

题目建议: 本题关键在于理解双指针思想 

题目链接:力扣

思路一:暴力解算,直接将所有元素变成一个平方,然后进行排序。

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;
    }
};

思路二:双指针法,首先声明一个数组与原始的数组大小相同,然后由两头的指针由大到小进行排序。

class Solution {
public:
    vector<int> sortedSquares(vector<int>& nums) {

        //首先声明一个数组长度与原始的大小相同
        vector<int> nums1(nums.size(),0);
        
        //提供数组的长度,为以后使用提供便利
        int k = nums.size()-1;

        for(int i = 0,j=nums.size()-1;i<=j;)
        {
            if(nums[i]*nums[i]<nums[j]*nums[j])
            {
                nums1[k--]=nums[j]*nums[j];
                j--;
            }
            else
             {
                nums1[k--]=nums[i]*nums[i];
                i++;
            }
        }
        return nums1;
    }
};

 209.长度最小的子数组

题目建议: 本题关键在于理解滑动窗口,这个滑动窗口看文字讲解 还挺难理解的,建议大家先看视频讲解。  拓展题目可以先不做。

题目链接:力扣 

思路一:直接暴力计算,时间很长,不建议。
思路二:双指针法,使用两个指针将中间的数组提取出来。
双指针一般是使用一个for循环做了两个for循环的事情。

起始位置使用i表示,终止位置使用j表示。起始位置与终止位置之间的差距大于等于s,则进行改变。

class Solution {
public:
    int minSubArrayLen(int target, vector<int>& nums) {
        
        int result = INT32_MAX;//声明最大的长度
        int i = 0;//起始位置
        int sum = 0;//和

        int length = INT32_MAX;//长度

        for(int j = 0;j<nums.size();j++)//终止位置
        {
            sum+=nums[j];
            while(sum>=target)//注意是while
            {
                
                length = j - i + 1;
                sum = sum-nums[i];
                i++;//起始位置向前移动
                result = result < length ? result : length;
            }
            


        }
        return result<INT32_MAX?result:0;

    }
};

59.螺旋矩阵II

题目建议:  本题关键还是在转圈的逻辑,在二分搜索中提到的区间定义,在这里又用上了。

题目链接:力扣

关键在于四个边界的条件处理,一入循环深似海。注意循环不变量,坚持一个规则处理每一个边,按照左闭右开的规则。

由于一圈等于两行两列,因此,转动的是n/2圈。需要判断转动的圈数是奇数还是偶数。左闭右开,终止位置是不包含的。

class Solution {
public:
    vector<vector<int>> generateMatrix(int n) {
        //起始位置
        int startx = 0;
        int starty = 0;

        //偏移量
        int offset = 1;

        //声明一个二维数组
        vector<vector<int>> res(n, vector<int>(n, 0)); // 使用vector定义一个二维数组

        //加入的数字
        int count = 1;

        //转动圈数
        int circle = n/2;
        while(circle--)//转动的圈数
        {
            int i,j;
            for( j = starty;j<n-offset;j++)//第一行
            {
                res[startx][j]=count++;
            }
            for( i = startx;i<n-offset;i++)//右侧第一列
            {
                 res[i][j]=count++;
            }
            for(;j>starty;j--)//下侧第一列
            {
                 res[i][j]=count++;
            }
            for(;i>startx;i--)
            {
                 res[i][j]=count++;
            }
            startx++;
            starty++;
            offset++;
        }
        if(n%2 == 1)
        {
            res[n/2][n/2]=n*n;
        }
        return res;
    }
};

 

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

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

相关文章

maven常用插件详解

官网讲解&#xff1a;https://maven.apache.org/plugins/ Maven 实际上是一个依赖插件执行的框架&#xff0c;它执行的每个任务实际上都由插件完成的。Maven 的核心发布包&#xff08;jar&#xff09;中并不包含任何 Maven 插件&#xff0c;它们以独立构件的形式存在&#xff…

数据翻译的代码辅助插件,一个注解搞定,减少30%SQL代码量

一、开源项目简介 Easy Trans是一款用于做数据翻译的代码辅助插件&#xff0c;利用MyBatis Plus/JPA/BeetlSQL 等ORM框架的能力自动查表&#xff0c;让开发者可以快速的把ID/字典码 翻译为前端需要展示的数据。 二、开源协议 使用Apache-2.0开源协议 三、界面展示 四、功能概…

CTF入门指南

何为CTF &#xff1f; CTF&#xff08;Capture The Flag&#xff09;夺旗比赛&#xff0c;在网络安全领域中指的是网络安全技术人员之间进行技术竞技的一种比赛形式。CTF起源于1996年DEFCON全球黑客大会&#xff0c;以代替之前黑客们通过互相发起真实攻击进行技术比拼的方式。…

文档关键信息提取形成知识图谱:基于NLP算法提取文本内容的关键信息生成信息图谱教程及码源(含pyltp安装使用教程)

文档关键信息提取形成知识图谱&#xff1a;基于NLP算法提取文本内容的关键信息生成信息图谱&#xff08;含pyltp安装使用教程&#xff09; 1. 项目介绍 目标&#xff1a;输入一篇文档&#xff0c;将文档进行关键信息提取&#xff0c;进行结构化&#xff0c;并最终组织成图谱组…

Cisco® Catalyst® 8000V 边缘软件 (Catalyst 8000V) 17.11.1a 发布 - 虚拟路由器

Cisco Catalyst 8000v Edge Software, IOS XE Release Dublin-17.11.1a ED 请访问原文链接&#xff1a;https://sysin.org/blog/cisco-catalyst-8000v/&#xff0c;查看最新版。原创作品&#xff0c;转载请保留出处。 作者主页&#xff1a;sysin.org Cisco Catalyst 8000V 边…

Spark集群的运行基本流程是怎样的?

Spark集群的运行架构 Spark是基于内存计算的大数据并行计算框架&#xff0c;比MapReduce计算框架具有更高的实时性&#xff0c;同时具有高效容错性和可伸缩性&#xff0c;在学习Spark操作之前&#xff0c;首先介绍Spark运行架构&#xff0c;如图所示。 在上图中&#xff0c;Sp…

asp网站Repuest获取Http网络读卡器刷卡数据Response回应驱动读卡器显示响声

RFID网络WIFI无线TCP/UDP/HTTP可编程二次开发读卡器POE供电语音-淘宝网 (taobao.com) 中文液晶显示http协议网络读卡器是一款能利用现有的计算机网络&#xff0c;不需要独立布线就可以组成一个高性能低成本实时联网ID卡管理系统的端终设备&#xff0c;刷卡后即时向远程计算机传…

快递业的最新发展趋势:2023年市场预测

快递业是随着电子商务崛起而迅速发展的行业之一。自从互联网取代了线下商业模式&#xff0c;电子商务的发展成为了现代零售业的主要趋势&#xff0c;而快递业则变得越来越重要和不可或缺。未来的快递业需要应对许多挑战和机遇。 在2023年&#xff0c;快递业将进一步走向数字化、…

淘宝商品分类详情API接口

淘宝商品分类详情API接口&#xff0c;是指淘宝开放平台提供的接口&#xff0c;用于获取淘宝商品分类的详细信息&#xff0c;包括分类ID、分类名称、父级分类ID、子分类ID等。 具体使用方法如下&#xff1a; 获取淘宝开放平台的API请求地址和appkey等必要信息&#xff1b; 调用…

云南省地矿测绘院1:500地形免像控项目分享

无人机航测系统的出现&#xff0c;将测绘项目时间由“年”缩短到“月”&#xff0c;但布设相控仍然是一个麻烦而辛苦的工作。尤其是在野外人力难以到达的地方&#xff0c;相控布设更是占据项目时间的绝大部分&#xff0c;野外复杂多变的环境也给作业人员带来很多危险。 所以&a…

数据结构第四天: Complete Binary Search Tree 【搜索二叉树,完全二叉树】

二叉搜索树 bst 被递归地定义为具有以下属性的二叉树节点的左子树仅包含键小于节点键的节点 a 的右子树节点只包含键大于或等于节点键的节点 左右子树也必须是二叉搜索树 完全二叉树cbt是一棵完全充满可能异常的树从左到右填充的底层现在给定一系列不同的非负整数键&#xff0c…

5.25黄金是延续下跌还是强势反弹?今日如何布局

近期有哪些消息面影响黄金走势&#xff1f;今日黄金多空该如何研判&#xff1f; ​黄金消息面解析&#xff1a;周四(5月25日)亚市盘中&#xff0c;现报1957.89美元/盎司&#xff0c;昨日最高触及1985.28美元/盎司&#xff0c;最低触及1956.68美元/盎司。周三公布的会议纪要显示…

web自动化测试进阶篇03 ———自动化并发测试应用

&#x1f60f;作者简介&#xff1a;博主是一位测试管理者&#xff0c;同时也是一名对外企业兼职讲师。 &#x1f4e1;主页地址&#xff1a;【Austin_zhai】 &#x1f646;目的与景愿&#xff1a;旨在于能帮助更多的测试行业人员提升软硬技能&#xff0c;分享行业相关最新信息。…

选择小程序第三方开发框架时,需要考虑哪些因素?

在选择小程序第三方开发框架时&#xff0c;我们需要综合考虑开发者技术栈、项目需求和目标平台等因素。Taro 是一个多端统一开发框架&#xff0c;适合需要覆盖多个平台的开发者&#xff0c;最终的选择应该基于个人的技术背景和项目需求&#xff0c;同时也要关注框架的稳定性、社…

如何解决接口幂等性问题?

什么是幂等性&#xff1f; 参考地址&#xff1a;解决幂等问题 概念&#xff1a; 一个接口&#xff0c;不管我调多少次&#xff0c;只要参数不变&#xff0c;结果也应该不变。 但是在实际工作中&#xff0c;幂等性一般分为两种&#xff1a; 请求幂等&#xff1a;每次请求&…

Linux的学习

学习笔记&#xff0c;只写重点&#xff0c;不连贯&#xff0c;写得很水。 视频from:2021韩顺平 一周学会Linux。学习地址&#xff1a;https://www.bilibili.com/video/BV1Sv411r7vd 老师说明&#xff1a;后面我们的Redis、ginx包括项目都会使用到Linux,也是和我讲解的Linux版本…

开源网安受邀参加2023澳门万讯论坛,引领软件安全领域国产化替代浪潮

近日&#xff0c;2023万讯论坛在澳门成功举办。本次论坛由万讯电脑科技主办&#xff0c;旨在为澳门引入更多具有市场竞争力且自主研发的国内科技产品。开源网安作为拥有软件安全领域全链条产品的厂商&#xff0c;受邀参加本次论坛并分享软件安全领域国产化替代方案。 随着全球通…

Typescript ?问号的几种不同用法

1、作为Typescript 接口属性数量不确定时的定义方法 如果使用接口来限定了变量或者形参, 那么在给变量或者形参赋值的时候, 赋予的值就必须和接口限定的一模一样才可以, 多一个或者少一个都不行。 但是开发中我们往往可能会遇到少一个或者多一个的场景。 &#xff08;1&#…

Springboot +spring security,如何解决Session共享问题

一.简介 前一篇文章的所有的会话都是基于单机&#xff0c;如果服务部署在集群中&#xff0c;就会出现session失效的问题&#xff0c;为什么在集群环境下会出现session失效呢&#xff1f; 二.集群环境下session失效的原因 当用户第一次访问项目时&#xff0c;是机器1处理了登…

Kubernetes1.22.0 部署 metricis-service

概述 Install cfssl cat > proxy-client-csr.json<<EOF {"CN": "aggregator","hosts": [],"key": {"algo": "rsa","size": 2048},"names": [{"C": "CN",&quo…