【代码随想录02】977.有序数组的平方 209.长度最小的子数组 59.螺旋矩阵II

977. 有序数组的平方

题目描述

给你一个按 非递减顺序 排序的整数数组 nums,返回 每个数字的平方 组成的新数组,要求也按 非递减顺序 排序。

做题思路

由于原数组存在负数,所以平方后最大值可能出现在两端。因此可以采用双指针法,在数组首尾各放置一个指针,比较指针元素平方后的值。较大者放入结果数组末端,同时该指针向中间移动,继续比较。

参考代码

class Solution {
    public int[] sortedSquares(int[] nums) {
        int left=0;//左指针
        int right=nums.length-1;//右指针
        int[] result=new int[nums.length];//结果数组
        int index=result.length-1;//结果数组的指针要放在末端
        while(left<=right){//注意等号
            if(nums[left]*nums[left]>nums[right]*nums[right]){//左指针元素平方比右指针大
                result[index--]=nums[left]*nums[left];//左指针元素平方放入结果数组
                ++left;//左指针移动
            }
            else{
                result[index--]=nums[right]*nums[right];//右指针元素平方放入结果数组
                --right;//右指针移动
            }
        }
        return result;
    }
}

209. 长度最小的子数组

题目描述

给定一个含有 n 个正整数的数组和一个正整数 target

找出该数组中满足其和 ≥ target 的长度最小的 连续子数组 [numsl, numsl+1, ..., numsr-1, numsr] ,并返回其长度**。**如果不存在符合条件的子数组,返回 0

做题思路

由于本题的目标是连续子数组,所以可以想到使用滑动窗口法,也就是双指针法。

将右指针设定为子数组的右端,左指针为左端。首先左指针不动,右指针右移,滑动窗口不断增长,和不断增加,当和 ≥ target 时,此时的长度满足条件,但题目要求长度最小,因此需要与之前成立的长度进行比较,更新最小长度。同时左指针右移,更新滑动窗口。

参考代码

class Solution {
    public int minSubArrayLen(int target, int[] nums) {
        int left=0;//左指针
        int result=Integer.MAX_VALUE;
        int sum=0; 
        for(int right=0;right<nums.length;right++){//左指针不动,右指针右移,构建窗口
            sum+=nums[right];
            while(sum>=target){//此时窗口内的和已经满足条件
                result=Math.min(result,right-left+1);//更新最小长度
                sum-=nums[left++];//左指针右移,开始新一轮窗口
            }
        }
        return result==Integer.MAX_VALUE?0:result;
    }
}

59. 螺旋矩阵 II

题目描述

给你一个正整数 n ,生成一个包含 1n^2 所有元素,且元素按顺时针顺序螺旋排列的 n x n 正方形矩阵 matrix

做题思路

本题的关键点是区间左右的开闭n 奇偶的分别处理,将一圈分为上下左右 4 个左开右闭的区间。

参考代码

//采取左闭右开区间
class Solution {
    public int[][] generateMatrix(int n) {
        int loop=0;//循环数
        int[][] res=new int [n][n];
        int start=0;//每次循环从(start,start)开始
        int count=1;//填入的数
        int i,j;
        while(loop++<n/2){//注意没有等号,因为第1圈是第0次循环
            for(j=start;j<n-loop;j++){
                res[start][j]=count++;//上面从左到右
            }
            for(i=start;i<n-loop;i++){
                res[i][j]=count++;//右边从上到下
            }
            for(;j>=loop;j--){
                res[i][j]=count++;//下面从右到左
            }
            for(;i>=loop;i--){
                res[i][j]=count++;//左边从下到上
            }
            start++;
        }
        if(n%2==1){//如果n是奇数,中心要单独赋值
            res[n/2][n/2]=count;
        }
        return res;
    }
}

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

数据库表导出到excel:前置知识1 ALL_TAB_COLS

ALL_TAB_COLS 当前用户可访问的表、视图和群集的列的相关信息 其中几个字段: OWNER&#xff1a;表&#xff0c;视图及群集的Owner   TABLE_NAME&#xff1a; 表&#xff0c;视图及聚簇的名称   COLUMN_NAME&#xff1a; 字段名   DATA_TYPE &#xff1a;字段的数据类型…

君子签区块链+AI,驱动组织实现高效合同管理、精准风险控制

在传统合同签署的过程中&#xff0c;企业、组织、机构都面临着合同签署与管理的诸多问题和挑战&#xff1a;合同种类繁多、数量庞大导致起草效率低下&#xff1b;管理流程繁琐、权限分散使得审批周期冗长且效率低下&#xff1b;合同签订版本难以精准复核&#xff0c;风险防控更…

7.基于SpringBoot的SSMP整合案例-表现层开发

目录 1.基于Restfu1进行表现层接口开发 1.1创建功能类 1.2基于Restful制作表现层接口 2.接收参数 2使用Apifox测试表现层接口功能 保存接口&#xff1a; 分页接口&#xff1a; 3.表现层一致性处理 3.1先创建一个工具类&#xff0c;用作后端返回格式统一类&#xff1a;…

如何利用小程序容器技术搭建小程序生态?

小程序&#xff0c;作为现代移动互联网生态中的重要基础设施&#xff0c;正以其独特的创新性和便捷性展现出勃勃生机。截至2021年&#xff0c;全网小程序的数量已经突破了700万&#xff0c;其中微信小程序的开发者达到了300万之多。这一数字不仅代表了小程序在技术层面的成熟度…

Java项目总结3

1.抽象类与抽象方法 注意&#xff1a; 抽象类不能实例化 抽线类中不一定有抽i像方法&#xff0c;有抽象方法的类一定是抽象类 可以有构造方法 抽象类的子类要么重写抽象类中的所有抽象方法&#xff0c;要么是抽象类 抽象类的作用&#xff1a; 抽取共性时&#xff0c;无法确定方…

Linux:网络配置命令

目录 一、查看网络接口信息 ifconfig 二、修改网络配置文件 三、设置网络接口参数 ifconfig 四、查看主机名称 hostname 五、查看路由表条目route 5.1、查看路由 5.2、添加、删除静态路由条目 5.3、添加、删除默认网关记录 六、netstat命令 七、ss 命令 八、测试网络…

java web 部分

jsp作用域由大到小 过滤器有哪些作用&#xff1f; 过滤器的用法&#xff1f;&#xff08;对客户端的请求统一编码和对客户端进行认证&#xff09; JSP和Servlet中的请求转发分别如何实现&#xff1f; JSP 和 Servlet 有哪些相同点和不同点&#xff0c;他们之间的联系是什么…

恭喜!H医生一个月内荣获美国芝加哥大学访问学者邀请函

➡️【院校背景】 芝加哥大学&#xff08;英文&#xff1a;The University of Chicago&#xff0c;简称UChicago、“芝大”&#xff09;由石油大王约翰洛克菲勒于1890年创办&#xff0c;坐落于美国伊利诺伊州芝加哥市&#xff0c;一所私立研究型大学&#xff0c;属于全球大学校…

vue3 滚动条滑动到元素位置时,元素加载

水个文 效果 要实现的思路就是&#xff0c;使用IntersectionObserver 检测元素是否在视口中显示&#xff0c;然后在通过css来进行动画载入。 1.监控元素是否视口中显示 const observer new IntersectionObserver((entries) > {entries.forEach((entry) > {if (entry.i…

web平台—apache

web平台—apache 1. 学apache前需要知道的知识点2. apache详解2.1 概述2.2 工作模式2.3 启动apache网站整体流程2.4 相关文件保存位置2.5 配置文件详解 3. apache配置实验实验1&#xff1a;设置apache的目录别名实验2&#xff1a;apache的用户认证实验3&#xff1a;虚拟主机 (重…

基于Arduino平台开源小车的初步使用体验

创作原因&#xff1a;偶然有机会接触到基于Arduino平台的开源智能小车&#xff0c;初步使用后与大家分享。因使用时间不常&#xff0c;可以纯当个乐子看看&#xff0c;感谢大家的阅读&#xff01; 图&#xff1a;一款基于Arduino平台的开源小车 一、开发环境 Misly&#xff1…

明星代言方式8种助力品牌占领市场-华媒舍

1. 明星代言的重要性和市场价值 明星代言是一种常见的品牌推广方式&#xff0c;通过联系知名度高的明星来推广产品或服务&#xff0c;从而提升品牌的知名度和美誉度。明星代言能够借助明星的影响力和粉丝基础&#xff0c;将品牌信息传达给更广泛的受众&#xff0c;从而提高销量…

Linux:ollama大模型部署

目录 Ollama 是一个能在本地机器上轻松构建和运行大型语言模型的轻量级、可扩展框架&#xff0c;适用于多种场景&#xff0c;具有易于使用、资源占用少、可扩展性强等特点。 1.安装下载ollama 2.为 Ollama 创建一个用户 3.为ollama创建服务文件 4.启动ollama服务 5.拉取语…

6月28日华为云数据库斯享会上海站,NineData技术总监薛晓乐受邀并带来主题分享

6月28日&#xff08;周五&#xff09;&#xff0c;华为云数据库斯享会即将在上海举办&#xff0c;将与的开发者朋友们一起进行数据库技术交流&#xff01;NineData 技术总监薛晓乐受邀参会&#xff0c;并将带来《企业级数据库 DevOps 最佳实践》的主题分享。 本次活动议程&…

2024年第十四届亚太地区大学生数学建模竞赛(中文赛项)B题洪水灾害的数据分析与预测论文和代码分析

经过不懈的努力&#xff0c; 2024年第十四届亚太地区大学生数学建模竞赛&#xff08;中文赛项&#xff09;B题洪水灾害的数据分析与预测论文和代码已完成&#xff0c;代码为C题全部问题的代码&#xff0c;论文包括摘要、问题重述、问题分析、模型假设、符号说明、模型的建立和求…

uniapp+vue3+echarts编写微信小程序

uniappvue3echarts编写微信小程序 记录一下自己uniapp使用echarts开发图表&#xff0c;之前网上找了很多&#xff0c;本以为应该是挺常见的使用方式&#xff0c;没想到引入之路居然这么坎坷&#xff0c;在Dcloud插件市场&#xff0c;使用最多的&#xff1a;echarts-for-wx 但是…

用for语句实现九九乘法表

① #define _CRT_SECURE_NO_WARNINGS #include <stdio.h>int main() {for (int i 1; i < 9; i){for (int j 1; j < i; j){printf("%d*%d%d\t", j, i, i * j);}printf("\n");}return 0; } ② #define _CRT_SECURE_NO_WARNINGS #include &…

山西车间应用LP-LP-SCADA系统的好处有哪些

关键字:LP-SCADA系统, 传感器可视化, 设备可视化, 独立SPC系统, 智能仪表系统,SPC可视化,独立SPC系统 LP-SCADA&#xff08;监控控制与数据采集&#xff09;系统是工业控制系统的一种&#xff0c;主要用于实时监控、控制和管理工业生产过程。 在车间应用LP-SCADA系统&#xf…

克隆gitee仓库,在vs2022创建文件夹开发项目操作步骤

git网站 git知识大全 git教程&#xff1a;廖雪峰的官方网站 git菜鸟教程 gitee之创建项目步骤 同步源仓库 2. 克隆命令 3. 右击git Bash Here>粘贴命令行 4. 选中项目文件夹》创建本人文件夹&#xff08;ZYY&#xff09; 5. 打开vs2022》新建项目》选择Framework》下…

LLaMA-Factory安装

安装代码 https://github.com/echonoshy/cgft-llm/blob/master/llama-factory/README.md https://github.com/hiyouga/LLaMA-Factory/tree/mainLLaMA-Factoryhttps://github.com/hiyouga/LLaMA-Factory/tree/main 【大模型微调】- 使用Llama Factory实现中文llama3微调_哔哩…