LeetCode 热题 100 Day03

news2025/2/8 11:22:38

普通数组

常见的题型有:

        取模、区间合并、最大子序列和、最长非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.coloradmin.cn/o/1598096.html

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

相关文章

有依赖的的动态规划问题

题目 题型分析 这是比较典型的动态规划的问题。动态规划是什么呢&#xff1f;本质上动态规划是对递归的优化。例如&#xff0c;兔子数列&#xff1a;f(x) f(x - 1) f(x -2), 我们知道 f 代表了计算公式&#xff0c;这里解放思想一下&#xff0c;如果 f 替换为数组&#xff0…

用于 SQLite 的异步 I/O 模块(二十四)

返回&#xff1a;SQLite—系列文章目录 上一篇&#xff1a;SQLite的PRAGMA 声明&#xff08;二十三&#xff09; 下一篇&#xff1a;SQLite、MySQL 和 PostgreSQL 数据库速度比较&#xff08;本文阐述时间很早比较&#xff0c;不具有最新参考性&#xff09;&#xff08;二…

【数据结构|C语言版】单链表应用

前言1. 基于单链表实现通讯录1.1 知识要求1.2 功能要求 2. 代码总结2.1 SeqList.h2.2 SeqList.c2.3 Contact.h2.4 Contact.c2.5 test.c 后言 上期回顾&#xff1a;【数据结构|C语言版】单链表 前言 各位小伙伴大家好&#xff01;上期小编讲解了单链表相关知识&#xff0c;在此…

linux 设置定时任务---学习

1、设置定时任务 crontab -e 设置格式参考&#xff1a;【Linux】Linux crontab 命令定时任务设置_crontab 设置每天10:30执行-CSDN博客 测试过程&#xff1a; */1 * * * * /root/cronjob.sh 脚本内容: echo "hell0 cronjob" >> /root/test/hello.txt 实现…

腾讯云服务器CVM标准型S8实例CPU内存、网络和存储性能测评

腾讯云第八代云服务器标准型S8实例基于全新优化虚拟化平台&#xff0c;CPU采用Intel Emerald Rapids 全新处理器&#xff0c;睿频3.0GHz&#xff0c;内存采用最新DDR5&#xff0c;默认网络优化&#xff0c;最高内网收发能力达4500万pps&#xff0c;最高内网带宽可支持120Gbps。…

游戏生成式 AI:编织梦想,避开阴影

想象一下&#xff0c;一个沉浸式的游戏世界中玩家遇到的每个 NPC 都由 AI 驱动&#xff0c;他们能与玩家进行互动&#xff0c;从改变游戏体验。据 Inword 一项研究显示&#xff0c;绝大多数游戏玩家渴望这种互动&#xff0c;愿意投入更多的时间和金钱来玩这种由 AI 驱动的游戏。…

亚马逊、沃尔玛自养号测评技术解析:如何降低潜在风险

亚马逊等电商平台在全球范围内迅速扩张&#xff0c;竞争愈发激烈。为提升产品排名和销量&#xff0c;众多卖家选择采用自养号测评的策略。然而&#xff0c;自养号测评技术并非完美无缺&#xff0c;它存在着一定的技术局限性。由于缺乏对自养号原理及底层环境搭建的深入理解&…

如何在Vue3中使用H.265视频EasyPlayer.js流媒体播放器?

H5无插件流媒体播放器EasyPlayer属于一款高效、精炼、稳定且免费的流媒体播放器&#xff0c;可支持多种流媒体协议播放&#xff0c;可支持H.264与H.265编码格式&#xff0c;性能稳定、播放流畅&#xff0c;能支持WebSocket-FLV、HTTP-FLV&#xff0c;HLS&#xff08;m3u8&#…

操作系统(第五周 第一二堂总结)

目录 回顾 前景知识 概述 定义 进程和线程的关系 进程和线程的区别 线程优缺点 优点&#xff1a; 缺点&#xff1a; 易混概念 线程实现方式 线程的类型&#xff1a; ​编辑 多线程模型&#xff1a; 线程函数 头文件&#xff1a; 线程创建函数&#xff1a; 线…

k8s控制器(五)_____DaemonSet

DaemonSet控制器 DaemonSet控制器是Kubernetes中的一种控制器&#xff0c;用于确保集群中的每个节点都运行一个Pod的副本。它通常用于在整个集群中部署一些系统级别的服务&#xff1a; 在每一个node节点运行一个存储服务&#xff0c;例如gluster&#xff0c;ceph。在每一个no…

DRF视图组件(2个视图基类、5个视图扩展类、9个视图子类、视图集和路由映射)

DRF视图组件(2个视图基类、5个视图扩展类、9个视图子类、视图集和路由映射) 目录 DRF视图组件(2个视图基类、5个视图扩展类、9个视图子类、视图集和路由映射)2个视图基类mixins的5个视图扩展类generics的9个视图子类视图集自定制返回格式自动生成路由(SimpleRouter)action装饰器…

非监督学习的模型为条件概率分布P(z|x)和p(x|z)的区别

在无监督学习中&#xff0c;假设X是输入空间&#xff0c;Z是输出的隐式结构空间&#xff0c;要学习的模型非概率模型情况可以表示为函数zg(x)&#xff0c;概率模型情况下表示为条件概率分布P&#xff08;z|x&#xff09;或p(x∣z)&#xff0c;它们 都可以用来描述数据中的潜在结…

[ROS 系列学习教程] 建模与仿真 - URDF 语法介绍

ROS 系列学习教程(总目录) 本文目录 一、robot标签二、link标签三、joint标签 URDF文件中使用XML格式描述的机器人模型&#xff0c;下面介绍URDF的XML标签。 一、robot标签 机器人描述文件中的根元素必须是robot&#xff0c;所有其他元素必须封装在其中。 属性 name&#x…

JetBrains Rider 2024.1 发布 - 快速且强大的跨平台 .NET IDE

JetBrains Rider 2024.1 发布 - 快速且强大的跨平台 .NET IDE 请访问原文链接&#xff1a;JetBrains Rider 2024.1 (macOS, Linux, Windows) - 快速且强大的跨平台 .NET IDE&#xff0c;查看最新版。原创作品&#xff0c;转载请保留出处。 作者主页&#xff1a;sysin.org Jet…

jpa使用Querydsl需要规避的一些坑

在使用Spring Data JPA时&#xff0c;通常会使用Querydsl来构建类型安全的查询。在Querydsl中&#xff0c;为了区分实体类与Querydsl查询类&#xff0c;习惯上会给查询类的前缀添加一个"Q"&#xff0c;表示该类是一个查询类。这样做可以有效地避免实体类与查询类之间…

数据结构和算法(哈希表和图(A*算法精讲))

一 、哈希表 1.1 哈希表原理精讲 哈希表-散列表&#xff0c;它是基于快速存取的角度设计的&#xff0c;也是一种典型的“空间换时间”的做法 键(key)&#xff1a; 组员的编号如&#xff0c;1、5、19。。。 值(value)&#xff1a; 组员的其它信息&#xff08;包含性别、年龄和…

pyqt实现星三角减压启动

这个对于plc上实现是非常容易得。它本来就是逻辑控制器&#xff0c;如果用代码实现它&#xff0c;该怎么做呢&#xff1f;这个实现起来看似简单&#xff0c;实则是有不少坑的&#xff08;大神除外&#xff09;。我一直想用类来封装&#xff0c;让它继承QObject,为啥非要继承QOb…

电信网络如何异地共享文件?

电信异地共享文件是指在不同地区的电信网络下&#xff0c;通过使用特定技术实现文件的共享和传输。在传统的网络环境中&#xff0c;由于网络限制和复杂的网络设置&#xff0c;实现跨地区的文件共享是一个具有挑战性的任务。随着技术的不断进步&#xff0c;现在可以利用电信异地…

Spring Boot | SpringBoot对 “SpringMVC“的 “整合支持“、SpringMVC“功能拓展实现“

目录: SpringMVC 的 “整合支持” ( 引入"Web依赖启动器"&#xff0c;几乎可以在无任何额外的配置的情况下进行"Web开发")1.SpringMVC "自动配置" 介绍 ( 引入Web依赖启动器"后&#xff0c;SpringBoot会自动进行一些“自动配置”&#xff0…

文章解读与仿真程序复现思路——中国电机工程学报EI\CSCD\北大核心《应用图论建模输电网的电力现货市场出清模型》

本专栏栏目提供文章与程序复现思路&#xff0c;具体已有的论文与论文源程序可翻阅本博主免费的专栏栏目《论文与完整程序》 论文与完整源程序_电网论文源程序的博客-CSDN博客https://blog.csdn.net/liang674027206/category_12531414.html 电网论文源程序-CSDN博客电网论文源…