LeetCode 热题 100 Day03

普通数组

常见的题型有:

        取模、区间合并、最大子序列和、最长非0子序列等。

一些解题思路很巧妙,多练多总结。

Leetcode 53. 最大子数组和 [dp动态查找最大值]

题目理解

        给定一个整数数组, 求一个连续的子序列

        该子序列满足和最大

        要求返回最大和

解题思路: 

       动态规划的思路

        定义dp数组  dp[i]表示以i为结尾的子序列的最大值

        则有递推公式:

        dp[i]=max(dp[i-1]+nums[i],nums[i])

        其本质表达的是:是需要前面的前缀还是从i位置重新计算

        用max维护整个数组中,最大的子序列和

1.解题

动态规划版解题

class Solution {public int maxSubArray(int[] nums) {int[] dp=new int[nums.length];dp[0]=nums[0];int max=nums[0];for(int i=1;i<nums.length;i++){dp[i]=Math.max(dp[i-1]+nums[i],nums[i]);max=Math.max(max,dp[i]);}return max;}
}

2.复杂度分析

时间复杂度:O(n) 遍历数组的时间

空间复杂度:O(1) max的存储空间损耗

Leetcode 56. 合并区间  [排序,合并]

 

题意理解

        给定多个区间

        要求对相互交叠的区间进行合并。

解题思路

        为了方便进行合并,以所有区间的左边界为准进行排序。

        当区间i的右边界>=i+1区间的左边界时,两区间交叠——进行合并操作

                合并有两种情况:

                i+1的右边界<=i右边界:即i+1区间包含在i区间内, 将合并的区间更新至i+1位置

                i+1的右边界>i的右边界:即对i区间的右边界进行更新,更新为最远右边界,将合并的区间更新至i+1位置

        当区间i的右边界<i+1区间的左边界时,两区间不交叠

        当且仅当下一区间不交叠时,将当前合并的区间加入结果集

1.解题

class Solution {public int[][] merge(int[][] intervals) {int len=intervals.length;Arrays.sort(intervals,(a,b)->{return a[0]-b[0];});LinkedList<int[]> result=new LinkedList<>();result.add(new int[]{intervals[0][0],intervals[0][1]});for(int i=1;i<len;i++){//交叠if(intervals[i-1][1]>=intervals[i][0]){intervals[i][1]=Math.max(intervals[i-1][1],intervals[i][1]);result.getLast()[1]=intervals[i][1]; }else{result.add(new int[]{intervals[i][0],intervals[i][1]});}}int[][] resultArr=new int[result.size()][2];for(int i=0;i<result.size();i++){resultArr[i][0]=result.get(i)[0];resultArr[i][1]=result.get(i)[1];}return resultArr;}
}

2.复杂度分析

时间复杂度:O(nlog) sort排序的时间损耗

空间复杂度:O(2n) 区间数组的空间损耗

3.技巧

如何按左边界进行排序

//按照左边界升序排序
Arrays.sort(intervals,(a,b)->Integer.compare(a[0],b[0]));

Leetcode 189. 轮转数组  [技巧,取模]

 

题意理解

        给定一个数组,每次向右旋转轮转k, 求轮转后的结果值

解题思路

        将原数组下标为 i的元素放至新数组下标为 (i+k) mod n 的位置

        其可以想象为,在nums前方防止k个空位置,则当前的坐标就变成了i+k

        但是数组大小为n, 则为了将超出数组的元素重新放入对应元素位置,则有

        index=(i+k)mod n  (取模运算总是在循环0-n-1之间的值)

1.解题

class Solution {public void rotate(int[] nums, int k) {int len=nums.length;int[] result= Arrays.copyOfRange(nums,0,len);for(int i=0;i<len;i++){nums[(i+k)%len]=result[i];}}
}

2.复杂度分析

时间复杂度:O(n) 遍历数组的时间损耗

空间复杂度:O(n) 存储结果的空间损耗

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

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

相关文章

基于openssl实现TCP双向认证

文章参考 深入探索 OpenSSL&#xff1a;概念、原理、开发步骤、使用方法、使用场景及代码示例 c使用OpenSSL基于socket实现tcp双向认证ssl(使用TSL协议)代码实现 SSL握手通信详解及linux下c/c SSL Socket代码举例(另附SSL双向认证客户端代码) SSL/CA 证书及其相关证书文件(pem…

使用 Rust 和 DDD 构建 API 服务器

Introduction 介绍 I tried implementing an API server using Rust and the Axum framework. 我尝试使用 Rust 和 Axum 框架实现 API 服务器。 Target Audience 本文受众 Those who want to implement an API server with Rust. 那些想要用 Rust 实现 API 服务器的人。Those w…

如何查看docker配置的镜像仓库

在Docker中&#xff0c;想要查看配置的镜像仓库&#xff08;注册表&#xff09;地址&#xff0c;可以通过查询Docker守护进程的配置来实现。在Linux系统中&#xff0c;Docker守护进程的配置文件通常位于 /etc/docker/daemon.json。该文件中可能会包含registry-mirrors配置项&am…

【Delphi 爬虫库 2】使用封装好的 JSON 解析库对 JSON 数据进行解析

当我们使用GET或POST方法获取到JSON数据时&#xff0c;我们需要对其进行解析。倘若我们使用现有的JSON解析库&#xff0c;这一过程将变得异常简单。在前文中&#xff0c;我们获得了一个翻译结果的JSON数据&#xff0c;具体如下所示 {“sessionUuid”:“translate_uuid171308666…

贪心算法先导

贪心算法其实就是没有什么规律可言&#xff0c;所以大家了解贪心算法 就了解它没有规律的本质就够了。 不用花心思去研究其规律&#xff0c; 没有思路就立刻看题解。 基本贪心的题目 有两个极端&#xff0c;要不就是特简单&#xff0c;要不就是死活想不出来。 学完贪心之后再…

算法训练营第41天|LeetCode 343.整数拆分 96.不同的二叉搜索树

LeetCode 343.整数拆分 题目链接&#xff1a; LeetCode 343.整数拆分 解题思路&#xff1a; 递推公式&#xff1a;一个数n是由1到n-1和另一个数的分解而来的&#xff0c;而另一个数是由更小的数分解而来的。 代码&#xff1a; class Solution { public:int integerBreak(…

Springboot+Vue项目-基于Java+MySQL的校园周边美食探索及分享平台系统(附源码+演示视频+LW)

大家好&#xff01;我是程序猿老A&#xff0c;感谢您阅读本文&#xff0c;欢迎一键三连哦。 &#x1f49e;当前专栏&#xff1a;Java毕业设计 精彩专栏推荐&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb; &#x1f380; Python毕业设计 &…

SU-03T语音识别

语音识别的由SU-03T、咪头、喇叭、还有一个CH340串口组成。SU-03T不需要代码的写入&#xff0c;直接可以进行配置就可以使用&#xff0c;极大降低了开发难度。 为客户提供超低成本的离线语 音识别方案&#xff0c;可广泛且快速应用于智能家居&#xff0c;各类智能小家电&#x…

【BlueDroid】【BLE】开关广播\扫描\配对\连接分析

1. 精讲蓝牙协议栈&#xff08;Bluetooth Stack&#xff09;&#xff1a;SPP/A2DP/AVRCP/HFP/PBAP/IAP2/HID/MAP/OPP/PAN/GATTC/GATTS/HOGP等协议理论 2. 欢迎大家关注和订阅&#xff0c;【精讲蓝牙协议栈】和【Android Bluetooth Stack】专栏会持续更新中.....敬请期待&#x…

如何实现YOLOv8保存目标检测后的视频文件

首先安装所需的库和依赖项&#xff0c;确保你已经安装了OpenCV和YOLOv8的相关库和依赖项。你可以使用pip或conda来安装它们。 其次加载YOLOv8模型&#xff0c;使用YOLOv8的训练权重文件和配置文件&#xff0c;加载模型并进行初始化。这可以通过使用适当的库函数来完成&…

Java面试题:描述Java 17中的密封接口及其用途

Java 17是继Java 11和Java 16之后的又一个长期支持&#xff08;LTS&#xff09;版本&#xff0c;它于2021年9月发布。在Java 17中&#xff0c;一个重要的新特性是密封接口&#xff08;Sealed Interfaces&#xff09;&#xff0c;这是对Java接口的增强&#xff0c;它允许接口有更…

【Git】Git的安装与常用命令

Git的安装与常用命令 一、Git的安装 &#xff08;一&#xff09;下载 官网下载&#xff1a;https://git-scm.com/downloads 镜像网站&#xff1a;https://registry.npmmirror.com/binary.html?pathgit-for-windows/ &#xff08;二&#xff09;安装 双击安装&#xff0c…

Elasticsearch分布式搜索

实用篇-ES-环境搭建 ES是elasticsearch的简称。我在SpringBoot学习 数据层解决方案 的时候&#xff0c;写过一次ES笔记&#xff0c;可以结合一起看一下。 之前在SpringBoot里面写的相关ES笔记是基于Windows的&#xff0c;现在我们是基于docker容器来使用&#xff0c;需要你们提…

安装jmeter和ant

安装jmeter和ant 安装java环境 安装jdk和jre 下载Java SE Development Kit 8 Java SE subscribers will receive JDK 8 updates until at least December 2030. 选择指定包进行安装&#xff0c;如windows 共享账号参考&#xff1a;Oracle官网 账号及密码 目前官网下载低…

springboot接口提高查询速度方法

接口想要提高查询速度&#xff0c;需要减少查询数据库的次数&#xff0c;需要把循环里面的查询提出来一次性查询完毕&#xff0c;然后通过java代码来获取响应的值。如下所示&#xff1a; List<OrderInfoHtVO> orderInfoList orderInfoService.getOrderInfoHtlist(query…

K12智慧校园-学工中心

1 系统概述 学工管理系统用于帮助学校学工部门负责拟定学院年度学生工作计划&#xff0c;提出年度学生工作思路及工作要点&#xff0c;并负责指导各系开展学生工作&#xff1b;负责学院的学风建设与校园文明督查&#xff1b;负责新生军训工作的组织、协调和安排&#xff1b;负…

顺序表 (头删 尾删 清空)

//头删 | 1 #include "head.h" | 1 #ifndef ww87 void head_del(p lp) | 2 int main(int argc, const char *argv[]) …

js纯前端实现语音播报,朗读功能(2024-04-15)

实现语音播报要有两个原生API 分别是【window.speechSynthesis】【SpeechSynthesisUtterance】 项目代码 // 执行函数 initVoice({text: 项目介绍,vol: 1,rate: 1 })// 函数 export function initVoice(config) {window.speechSynthesis.cancel();//播报前建议调用取消的函数…

[阅读笔记2][FLAN]FINETUNED LANGUAGE MODELS ARE ZERO-SHOT LEARNERS

接下来这篇是谷歌的FLAN&#xff0c;提出了指令微调这一新范式&#xff0c;在2022年发表。 这篇论文指出GPT3的zero-shot性能相比few-shot性能差太多了。他们发现如果对预训练模型进行指令微调能使zero-shot性能显著提升&#xff0c;下面右图显示指令微调后zero-shot比GPT3 few…

【zml】vp9 vp8

目录 问题 方案 知识点 研究过程 源码编译的可能 问题 所有 的机型 中&#xff0c;就海思芯片的有这个问题。应该是它的h264的编解码 问题&#xff0c;所以目前是让它以vp9在推流就没有问题。 但zlm对于vp9的录相是没有实现的。 所以目前现状是海思芯片的&#xff0c;就…