力扣爆刷第162天之TOP100五连刷76-80(最小路径和、最长公共前缀、最长连续序列)

力扣爆刷第162天之TOP100五连刷76-80(最小路径和、最长公共前缀、最长连续序列)

文章目录

      • 力扣爆刷第162天之TOP100五连刷76-80(最小路径和、最长公共前缀、最长连续序列)
      • 一、64. 最小路径和
      • 二、221. 最大正方形
      • 三、162. 寻找峰值
      • 四、14. 最长公共前缀
      • 五、128. 最长连续序列

一、64. 最小路径和

题目链接:https://leetcode.cn/problems/minimum-path-sum/description/
思路:每次只能向下或向右移动一步,求最小路径和,很经典的一道动态规划题,定义dp[i][j]表示,抵达nums[i][j]时的最小路径和,那么根据定义,要想抵达nums[i][j]这个位置,就得从nums[i-1][j]或者nums[i][j-1]的位置出发,而这两个位置对应的最小路径和即为dp[i-1][j]或者dp[i][j-1],故而dp[i][j] = min(dp[i-1][j], dp[i][j-1]) + nums[i][j]。
另外就是可以节省一下空间,把二维数组替换成一维数组。那么就要注意初始化,以及每一行开始的位置。
在这里插入图片描述

class Solution {public int minPathSum(int[][] grid) {int m = grid.length, n = grid[0].length;int[] dp = new int[n+1];Arrays.fill(dp, Integer.MAX_VALUE);dp[1] = 0;for(int i = 0; i < m; i++) {for(int j = 0; j < n; j++) {dp[j+1] = Math.min(dp[j], dp[j+1]) + grid[i][j];}}return dp[n];}
}

二、221. 最大正方形

题目链接:https://leetcode.cn/problems/maximal-square/description/
思路:矩阵内包含0或者1,求全为1的最大正方形,其实可以把题目理解为不为零的正方形的边长的计算,定义dp[i][j]表示以nums[i][j]为右下角的不为0的正方形的最大边长。那么根据定义可以得到推导关系,如果nums[i][j]不为0,那么以他为右下角的不为0的最长正方形边长,应该依赖于该位置的左方、上方、左上方的最小边长+1,。如这3个位置记录的边长为1,1,0,那么此处为0+1,如果是1,1,1,那么此处为1+1。如果为1,2,1,那么此处为1+1.
故而,dp[i][j] = Math.min(dp[i-1][j-1], Math.min(dp[i-1][j], dp[i][j-1])) + 1;
在这里插入图片描述

class Solution {public int maximalSquare(char[][] matrix) {int m = matrix.length, n = matrix[0].length;int[][] dp = new int[m][n];int max = 0;for(int i = 0; i < m; i++) {for(int j =0; j < n; j++) {if(matrix[i][j] == '0') continue;else if(i == 0 || j == 0) dp[i][j] = 1;else dp[i][j] = Math.min(dp[i-1][j-1], Math.min(dp[i-1][j], dp[i][j-1])) + 1;max = Math.max(max, dp[i][j]);}}return max * max;}
}

三、162. 寻找峰值

题目链接:https://leetcode.cn/problems/find-peak-element/description/
思路:让在数组中寻找峰值,所谓峰值即1,2,1其中2就是峰值,本身来说好找,遍历一遍即可,但是题目要求在O(logn)的时间复杂度完成,那么一般只要是要求logn,那么基本上就得是划分区间二分之类的,才能达到,心里要有这个意识。
既然知道了需要划分区间,那么区间该如何划分呢?其实很简单就是二分划分,二分查找,中间值如果满足峰值条件就直接返回,如果不满足就再次划分区间去各自的区间内进行重复的寻找即可。

class Solution {int index = -1;public int findPeakElement(int[] nums) {if(nums.length == 1) return 0;findMax(nums, 0, nums.length-1);return index;}void findMax(int[] nums, int left, int right) {if(left > right || index != -1) return;int mid = left + (right - left) / 2;if(mid == 0) {if(nums[mid] > nums[mid+1]) {index = mid;return;}}else if(mid == nums.length-1) {if(nums[mid] > nums[mid-1]) {index = mid;return;}}else if(nums[mid] > nums[mid-1] && nums[mid] > nums[mid+1]) {index = mid;return;}findMax(nums, left, mid-1);findMax(nums, mid+1, right);}
}

四、14. 最长公共前缀

题目链接:https://leetcode.cn/problems/longest-common-prefix/description/
思路:求最长公共前缀,这个直接遍历就可以,用第一个字符串中的每一个字符去遍历剩下每一个字符串中的字符,只要出现长度超界或者不等,就算抵达终点位置了,直接返回即可。

class Solution {public String longestCommonPrefix(String[] strs) {if(strs.length == 1) return strs[0];StringBuilder sb = new StringBuilder();for(int i = 0; i < strs[0].length(); i++) {for(int j = 1; j < strs.length; j++) {if(i >= strs[j].length() || strs[0].charAt(i) != strs[j].charAt(i)) return sb.toString();}sb.append(strs[0].charAt(i));}return sb.toString();}
}

五、128. 最长连续序列

题目链接:https://leetcode.cn/problems/longest-consecutive-sequence/description/
思路:有一个无序序列,求其中的元素能够排列组合成的最长连续序列,也就是如4,5,3,2,1,最长为1,2,3,4,5最长连续长度为5。
这种无序的请求可以考虑使用set添加元素,都添加之后遍历set,如果当前元素-1不存在于set之中,说明这个元素可能是一个连续序列的开头,所以就从此处开始,不断的+1,然后判断是否在set中,这样就可以求出最长连续序列。

class Solution {public int longestConsecutive(int[] nums) {Set<Integer> set = new HashSet<>();for(int i : nums) set.add(i);int max = 0;for(int i : set) {if(!set.contains(i-1)) {int t = 0;while(set.contains(i)) {i++;t++;}max = Math.max(max, t);}}return max;}
}

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

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

相关文章

mysql判断时间段是否重合

mysql判断时间段是否重合 SELECT CASE WHEN t1.start_time < t2.end_time AND t1.end_time > t2.start_time THEN ‘重合’ ELSE ‘不重合’ END AS result FROM table_name t1, table_name t2 WHERE t1.id <> t2.id;

14-26 剑和侠客 – 预训练模型三部曲3 – 机器人时代来临

概述 在第 1 部分和第 2 部分中&#xff0c;我们讨论了适用于文本和图像任务的预训练模型&#xff0c;并探索了当今常用的模型。我们分析了这些模型的架构以及如何将它们用于特定任务。实现 AGI 所需的两个主要支柱是语言理解和机器的视觉能力。有许多任务与这两种能力有关。 …

中职网络安全B模块渗透测试system0016

访问http://靶机IP/web1/,获取flag值&#xff0c;Flag格式为flag{xxx}&#xff1b; 可能会跳转8000端口删除进入80端口 进入后点击侦查一下&#xff0c;这里乱码了&#xff0c;我们点击查看是一个柯南&#xff0c;web但这是一个web题目肯定不是隐写术&#xff0c;所以说题目的…

CDF累积分布函数和PPF百分点位分布函数

目录 cdf累积分布函数 (CDF) ppf百分位点函数 (PPF) 区别与联系示例关系和区别 cdf 累积分布函数 (CDF) 定义&#xff1a; 累积分布函数 F ( x ) F(x) F(x) 给出随机变量 X X X 小于或等于某个值 x x x 的概率。数学定义&#xff1a; F ( x ) P ( X ≤ x ) F(x) P(X \l…

163邮件通知提醒功能怎么开?有哪些优势?

163邮件通知提醒如何定制&#xff1f;设置邮件通知提醒的步骤&#xff1f; 163邮箱作为一款常用的电子邮件服务工具&#xff0c;其邮件通知提醒功能能有效帮助用户及时处理重要邮件&#xff0c;提高工作效率。AokSend将详细介绍如何在163邮箱中开启邮件通知提醒功能&#xff0…

科普文:从Redis1.0到Redis7.0的发展历程来理解为什么Redis钟爱单线程

概叙 Redis 作为一款流行的开源数据库&#xff0c;每个版本都在不断的迭代和升级&#xff0c;新增了丰富的特性和功能&#xff0c;解决了更多实际应用场景中的问题&#xff0c;提高了 Redis 的性能和可靠性。 总体来说&#xff0c;Redis 的演化之路可以分为以下几个阶段&#x…

人形机器人头部结构设计

我又回来啦&#xff01;电机部分的教程会继续更新咯~ 前几天做了成图增材赛道&#xff0c;也算4个月以来本人做过最复杂的结构项目。 不知结果会怎么样&#xff0c;但我也尽全力啦&#xff01; 把说明书发在这里&#xff0c;STL已发GitHub&#xff0c;链接&#xff1a; zysampo…

如何视频提取字幕?推荐5款视频字幕提取软件

#7月份我的同事一个个消失了#&#xff0c;这不仅是一个话题标签&#xff0c;更是许多公司面临的现实写照。 在人手紧缺的夏日&#xff0c;如何提高工作效率成为当务之急。特别是对于需要处理视频内容的团队&#xff0c;一款能够快速提取字幕的软件显得尤为重要。 下面&#x…

揭秘小红书矩阵系统:源码助力一键自动发布,多平台管理,效率飙升!

在数字化时代&#xff0c;社交媒体已成为品牌和个人展示自我、推广产品的重要舞台。小红书&#xff0c;作为备受年轻人喜爱的社交平台&#xff0c;其影响力不容小觑。然而&#xff0c;面对日益激烈的竞争&#xff0c;如何高效地在小红书上发布内容、管理多平台账号&#xff0c;…

纯技术分享:淘宝商品详情原数据接口参数解析

item_get_app-获得淘宝app商品详情原数据 公共参数 名称类型必须描述keyString是调用key&#xff08;必须以GET方式拼接在URL中&#xff09;secretString是调用密钥api_nameString是API接口名称&#xff08;包括在请求地址中&#xff09;[item_search,item_get,item_search_s…

【JavaEE】Spring AOP详解

一.AOP的定义. Aspect Oriented Programming&#xff08;面向切面编程&#xff09;概括的来说AOP是一种思想, 是对某一类事情的集中处理 什么是面向切面编程呢? 切面就是指某一类特定问题, 所以AOP也可以理解为面向特定方法编程.什么是面向特定方法编程呢? 比如上个博客文章…

百度搜索框制作HTML+CSS

样品图 自制效果图&#xff08;附注释&#xff09; <!DOCTYPE html> <html lang"en"><head><!-- 定义文档的字符编码为UTF-8&#xff0c;以支持中文等多语言字符 --><meta charset"UTF-8" /><!-- 设置页面在不同设备上的…

不容错过!手把手教你开启微信通话自动录音功能!(含手机端和电脑端)

文章目录 📖 介绍 📖🏡 演示环境 🏡📒 微信自动录音 📒📝 方法一📝 方法二📝 电脑端自动录音📝 注意事项⚓️ 相关链接 ⚓️📖 介绍 📖 在商务沟通或重要对话中,通话录音功能可以帮助我们记录关键信息,避免遗漏,同时也是证据保存的一种手段。虽然微…

IPXProxy海外代理IP在MultiLogin指纹浏览器中的配置教程

Multilogin指纹浏览器是一款付费浏览器&#xff0c;它为用户提供了拥有多个虚拟浏览器配置文件的机会。作为最好的指纹浏览器之一&#xff0c;它常常被用来创建或管理多个账户&#xff0c;当然在这个过程&#xff0c;代理IP是不可或缺的一部分。下面给大家代理在MultiLogin指纹…

WPF界面设计-更改按钮样式 自定义字体图标

一、下载图标文件 iconfont-阿里巴巴矢量图标库 二、xaml界面代码编辑 文件结构 &#xe653; 对应的图标代码 Fonts/#iconfont 对应文件位置 <Window.Resources><ControlTemplate TargetType"Button" x:Key"CloseButtonTemplate"…

将Hyper-V虚拟机与主机共享网络

Hyper-V 网络设置 目标 将Hyper-V虚拟机网络配置为与主机使用同一网络&#xff0c;并确保主机网络连接不受影响。 前提条件 主机上已安装Hyper-V已创建Hyper-V虚拟机 步骤 1. 配置主机网络共享 打开 控制面板 -> 网络和 Internet -> 网络连接。右键点击 WIAN,选择…

IMX6ULL linux4.x RS485配置

文章目录 IMX6ULL linux4.x RS485配置使用IMX6ULL硬件流控设备树 使用普通IO口做软件流控串口驱动补丁设备树 rs485测试程序使用效果 IMX6ULL linux4.x RS485配置 使用IMX6ULL硬件流控 设备树 pinctrl_485r1: 485r1grp {fsl,pins <MX6UL_PAD_UART2_TX_DATA__UART2_DCE_T…

【鸿蒙学习笔记】UIAbility组件概述

官方文档&#xff1a;UIAbility组件 目录标题 UIAbility组件概述 [Q&A] 什么是UIAbility&#xff1f;声明周期UIAbility组件-启动模式UIAbility组件-与UI的数据同步 UIAbility组件概述 [Q&A] 什么是UIAbility&#xff1f; UIAbility组件是一种包含UI界面的应用组件&a…

防火墙组网

一、实验拓扑图 二、实验要求 1、DMZ区内的服务器&#xff0c;办公区仅能在办公时间内&#xff08;9&#xff1a;00-18&#xff1a;00&#xff09;可以访问&#xff0c; 生产区的设备全天可以访问。 2、生产区不允许访问互联网&#xff0c;办公区和游客区允许访问互联网。 3、办…

Sora模型:释放创意产业文本到视频AI的潜力

Sora&#xff0c;这个由OpenAI在2024年推出的文本到视频生成模型&#xff0c;不仅能够将文字描述转化为生动的视频内容&#xff0c;而且还能保持视频一分钟之久的连贯性和高质量&#xff0c;这在之前是难以想象的。 尽管AI在图像和文本理解上已取得巨大进步&#xff0c;但将这…