力扣爆刷第109天之CodeTop100五连刷31-35

力扣爆刷第109天之CodeTop100五连刷31-35

文章目录

      • 力扣爆刷第109天之CodeTop100五连刷31-35
      • 一、56. 合并区间
      • 二、124. 二叉树中的最大路径和
      • 三、19. 删除链表的倒数第 N 个结点
      • 四、72. 编辑距离
      • 五、93. 复原 IP 地址

一、56. 合并区间

题目链接:https://leetcode.cn/problems/merge-intervals/description/
思路:合并区间,需要先按照左边界排序,然后维护一个left和right,每次都比较当前的区间的左边界是否落点在right左边,在就合并区间,不在就保存[left, right],然后再单开一个新区间。

class Solution {public int[][] merge(int[][] intervals) {Arrays.sort(intervals, (a, b) -> a[0]-b[0]);List<int[]> list = new ArrayList<>();int left = intervals[0][0], right = intervals[0][1];for(int i = 0; i < intervals.length; i++) {if(intervals[i][0] <= right) {right = Math.max(right, intervals[i][1]);}else{list.add(new int[]{left, right});left = intervals[i][0];right = intervals[i][1];}}list.add(new int[]{left, right});int[][] res = new int[list.size()][2];for(int i = 0; i < list.size(); i++) {res[i] = list.get(i);}return res;}
}

二、124. 二叉树中的最大路径和

题目链接:https://leetcode.cn/problems/binary-tree-maximum-path-sum/description/
思路:求最大路径,后序遍历,对于左右节点,只计算大于0的,这种贪心策略才能得到最大值,递归返回只能返回最大的一个子树路径。

class Solution {int max = Integer.MIN_VALUE;public int maxPathSum(TreeNode root) {order(root);return max;}int order(TreeNode root) {if(root == null) return 0;int left = order(root.left);int right = order(root.right);left = left > 0 ? left : 0;right = right > 0 ? right : 0;max = Math.max(max, root.val + left + right);return root.val + Math.max(left, right);}
}

三、19. 删除链表的倒数第 N 个结点

题目链接:https://leetcode.cn/problems/remove-nth-node-from-end-of-list/description/
思路:要找到倒数第n个节点的位置,直接快慢指针,慢指针先不动,然后快指针先走n步,然后再快慢指针一块走,当快指针走到结尾处,慢指针的下一个位置就是要删除的节点。


class Solution {public ListNode removeNthFromEnd(ListNode head, int n) {ListNode root = new ListNode(-1, head);ListNode slow = root, fast = root;for(int i = 0; i < n; i++) {fast = fast.next;}while(fast.next != null) {slow = slow.next;fast = fast.next;}fast = slow.next;slow.next = fast.next;fast.next = null;return root.next;}
}

四、72. 编辑距离

题目链接:https://leetcode.cn/problems/edit-distance/description/
思路:编辑距离,定义dp[i][j]表示以word1[i]和word2[j]为结尾的字符串要相等所需的最少改动,如果word[i]==word[j]那么状态自然可以从上一个状态推导出来,即dp[i][j] = dp[i-1][j-1];。如word[i] != word[j],可以考虑增加、删除、修改,可从三个方向推导出来,dp[i][j] = Math.min(Math.min(dp[i-1][j], dp[i][j-1]), dp[i-1][j-1])+1;

class Solution {public int minDistance(String word1, String word2) {int n1 = word1.length(), n2 = word2.length();int[][] dp = new int[n1+1][n2+1];for(int i = 0; i <= n1; i++) {dp[i][0] = i;}for(int i = 0; i <= n2; i++) {dp[0][i] = i;}for(int i = 1; i <= n1; i++) {for(int j = 1; j <= n2; j++) {if(word1.charAt(i-1) == word2.charAt(j-1)) {dp[i][j] = dp[i-1][j-1];}else{dp[i][j] = Math.min(Math.min(dp[i-1][j], dp[i][j-1]), dp[i-1][j-1])+1;}}}return dp[n1][n2];}
}

五、93. 复原 IP 地址

题目链接:https://leetcode.cn/problems/restore-ip-addresses/description/
思路:典型的组合题目,组合需要索引位置,出了字符串拼接判断麻烦一点,其他的就是简单的组合。

class Solution {List<String> list = new ArrayList<>();List<String> temp = new ArrayList<>();public List<String> restoreIpAddresses(String s) {backTracking(s, 0);return list;}void backTracking(String s, int index) {if(temp.size() == 4) {if(index == s.length()) {list.add(String.join(".", temp));}return;}for(int i = index; i < s.length(); i++) {if (list.size() == 3 && i-index > 2) return;String res = isTrue(s, index, i);if(res != null) {temp.add(res);backTracking(s, i+1);temp.remove(temp.size()-1);}}}String isTrue(String s, int x, int y) {if(y - x > 2) return null;if(y - x >= 1 && s.charAt(x) == '0') return null;String ss = s.substring(x, y+1);int k = Integer.valueOf(ss);if(k >= 0 && k <= 255) return ss;return null;}
}

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

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

相关文章

在小程序中使用formdata上传数据,可实现多文件上传

1.下载formdata GitHub - zlyboy/wx-formdata: 在小程序中使用formdata上传数据&#xff0c;可实现多文件上传 2. 前端页面 <uni-collapse classcollapse refcollapse><uni-collapse-item v-for"(item, index) in attachmentList":key"index":ti…

【大数据存储】实验1 Hadoop伪分布式安装

实验1 Hadoop伪分布式安装 下载安装虚拟机软件Vmware&#xff0c;下载Ubuntu镜像文件&#xff0c;安装Ubuntu虚拟机 在Ubuntu系统中创建用户 已有用户prx17 更新APT,安装vim 使用vim创建并编辑一个文件 vim hello.c &#xff08;按o键进入编辑模式&#xff09; 源程序 #i…

C# WPF编程-Application类(生命周期、程序集资源、本地化)

C# WPF编程-Application类 应用程序的生命周期创建Application对象应用程序的关闭方式应用程序事件 Application类的任务显示初始界面处理命令行参数访问当前Application对象在窗口之间进行交互 程序集资源添加资源检索资源pack URI内容文件 本地化构建能够本地化的用户界面 每…

蓝桥杯23年第十四届省赛-整数删除|STL优先队列、双向链表

题目链接&#xff1a; 蓝桥杯2023年第十四届省赛真题-整数删除 - C语言网 (dotcpp.com) 0整数删除 - 蓝桥云课 (lanqiao.cn) 学习&#xff1a;蓝桥杯真题讲解&#xff1a;整数删除_蓝桥杯整数删除 c语言-CSDN博客 说明&#xff1a; 在暴力做法里面&#xff0c;每次都要花费…

基于神经网络的人脸识别系统的设计与实现

基于神经网络的人脸识别系统的设计与实现 摘要&#xff1a; 随着计算技术的快速发展&#xff0c;人脸识别已成为身份验证、安全监控等领域的关键技术。本文旨在设计并实现一个基于神经网络的人脸识别系统&#xff0c;该系统能够自动地从输入图像中检测和识别出人脸。论文首先介…

GPT-4智能体:迈向GPT-5的跳板

来自&#xff1a;鸵傲科技开发 在当今这个信息爆炸的时代&#xff0c;人工智能&#xff08;AI&#xff09;技术正以前所未有的速度发展&#xff0c;其中自然语言处理&#xff08;NLP&#xff09;领域尤为引人注目。GPT系列模型&#xff0c;作为NLP领域的佼佼者&#xff0c;其每…

php编辑器 ide 主流编辑器的优缺点。phpstorm vscode atom 三者对比

编辑器PhpStormvscodeAtom是否收费收费&#xff0c;有30天试用期免费免费内存占用Java平台&#xff0c;一个进程1G多内存占用好几个进程&#xff0c;合起来1G上下/基本功能都具备&#xff0c;有的功能需要装插件都具备&#xff0c;有的功能需要装插件都具备&#xff0c;有的功能…

机器学习之分层聚类中的概念聚类(Conceptual Clustering)

概念 在分层聚类中,概念聚类指的是通过将数据点分组成具有相似性的概念或类别,并构建一个层次化的结构来表示这些概念之间的关系。这种方法旨在捕捉数据的内在结构,并将数据组织成一个层次化的树状结构,以便更好地理解数据的层次性和相关性。 概念聚类在分层聚类中的主要…

《基础设施即代码(IaC)》译者序

随着信息技术的飞速发展&#xff0c;我们对基础设施的理解也在不断深化。传统的基础设施往往被看作是硬件和软件的堆砌&#xff0c;而现在&#xff0c;基础设施的概念已经发生了巨大的变化。在当今这个信息化、数字化的时代&#xff0c;基础设施已经成为了企业和组织运行的核心…

使用CMake搭建简单的Qt程序

目录结构 代码 CMakeLists.txt&#xff1a; cmake_minimum_required(VERSION 3.15)set(CMAKE_AUTOUIC ON) set(CMAKE_AUTOMOC ON) set(CMAKE_AUTORCC ON)# set the project name project(xxx)# 设置Qt的路径 # 例如 E:/Qt/Qt/aaa/msvc2019_64 # aaa 为Qt的版本号 set(QT_PATH…

2024年MathorCup数学建模思路B题思路分享

文章目录 1 赛题思路2 比赛日期和时间3 组织机构4 建模常见问题类型4.1 分类问题4.2 优化问题4.3 预测问题4.4 评价问题 5 建模资料 1 赛题思路 (赛题出来以后第一时间在CSDN分享) https://blog.csdn.net/dc_sinor?typeblog 2 比赛日期和时间 报名截止时间&#xff1a;2024…

应用案例分享|3D视觉引导汽车铅蓄电池自动化拆垛

在汽车制造及相关配套产业链中&#xff0c;铅蓄电池作为关键零部件之一&#xff0c;其生产和处理环节对效率和精准度都有着极高的要求。传统的铅蓄电池拆垛作业往往依赖于人工操作&#xff0c;不仅效率低下&#xff0c;还存在安全隐患。 项目背景 某大型蓄电池企业&#xff0c…

基于Spring Boot的校园招聘平台设计与实现(附源码+数据库+万字文档+PPT)

基于Spring Boot的校园招聘平台 一、摘要 随着社会的发展&#xff0c;社会的各行各业都在利用信息化时代的优势。计算机的优势和普及使得各种信息系统的开发成为必需。 毕业生信息招聘平台&#xff0c;主要的模块包括查看管理员&#xff1b;首页、个人中心、企业管理、空中宣…

瑞_23种设计模式_迭代器模式

文章目录 1 迭代器模式&#xff08;Iterator Pattern&#xff09;★★★1.1 介绍1.2 概述1.3 迭代器模式的结构1.4 中介者模式的优缺点1.5 中介者模式的使用场景 2 案例一2.1 需求2.2 代码实现 3 案例二3.1 需求3.2 代码实现 4 JDK源码解析 &#x1f64a; 前言&#xff1a;本文…

【论文笔记】Text2QR

论文&#xff1a;Text2QR: Harmonizing Aesthetic Customization and Scanning Robustness for Text-Guided QR Code Generation Abstract 二维码通常包含很多信息但看起来并不美观。stable diffusion的出现让平衡扫描鲁棒性和美观变为可能。 为了保证美观二维码的稳定生成&a…

python环境依赖安装指北——报错记录(持续更新中~)

生成requirements.txt文件 参考链接&#xff1a;https://zhuanlan.zhihu.com/p/687462277 省流&#xff1a;推荐使用pipreqs库&#xff0c;可以只导出项目用到的库 pip install pipreqspipreqs ./ --encodingutf8 --forcepip install -r requirements.txt 各种错误合集 err…

6款Mac垃圾清理软件横评 Mac电脑清理软件哪个好 cleanmymac评测

鉴于苹果笔记本昂贵的硬盘价格&#xff0c;导致我们不得不定期清理自己的硬盘空间&#xff0c;释放给真正有用的各种程序等。 即便我们把程序安装到外置硬盘&#xff0c;但是程序运行时的缓存&#xff0c;仍然是在内置的硬盘中。 今天就让我们对比看看&#xff0c;目前市面上…

Hystrix、Resilience4j和Sentinel对比

常用组件库对比 Hystrix、Resilience4j和Sentinel Hystrix、Resilience4j和Sentinel都是服务容错库&#xff0c;用于在分布式系统中实现诸如隔离、限流和熔断等模式。它们各有特点&#xff0c;在实现这些模式时也有所不同。下面是这三个库在隔离、限流和熔断方面的对比&#x…

从 Redis 开源协议变更到 ES 国产化:一次技术自主的机遇

引言 近日&#xff0c;Redis Labs 宣布其主导的开源项目 Redis 将采用双重源代码可用许可证&#xff08;RSALv2&#xff09;和服务器端公共许可证&#xff08;SSPLv1&#xff09;。这一重大决策标志着 Redis 从传统的 BSD 许可证向更加严格的控制权转变&#xff0c;同时也引发…

物流管理系统|基于Springboot的物流管理系统设计与实现(源码+数据库+文档)

物流管理系统目录 目录 基于Springboot的物流管理系统设计与实现 一、前言 二、系统功能设计 三、系统实现 1、管理员和管理员功能实现 &#xff08;1&#xff09;用户管理 &#xff08;2&#xff09;公告信息管理 &#xff08;3&#xff09;物流信息管理 &#xff08;…