【LeetCode-面试经典150题-day21】
目录
120.三角形最小路径和
64.最小路径和
63.不同路径Ⅱ
5.最长回文子串
120.三角形最小路径和
题意:
给定一个三角形
triangle,找出自顶向下的最小路径和。每一步只能移动到下一行中相邻的结点上。相邻的结点 在这里指的是 下标 与 上一层结点下标 相同或者等于 上一层结点下标 + 1 的两个结点。也就是说,如果正位于当前行的下标
i,那么下一步可以移动到下一行的下标i或i + 1。
【输入样例】triangle = [[2],[3,4],[6,5,7],[4,1,8,3]]
【输出样例】11
解题思路:
1. 定义一个新的二维list,list[j][i]表示在第j行中,下标为i处得到的最小路径和为多少
2. 边遍历triangle边计算,直到整个triangle遍历完毕,输出最后一行的最小值即可
3. 动态规划的规律,是triangle[j][i] += min(list[j-1][i-1],list[j-1][i]),初始是list[0][0]=triangle[0][0];
class Solution {public int minimumTotal(List<List<Integer>> triangle) {int len = triangle.size();//共有多少行;int[][] list = new int[len][len];list[0][0] = triangle.get(0).get(0);for(int j = 1;j < len; ++j){list[j][0] = triangle.get(j).get(0)+list[j-1][0];for(int i= 1; i < j; ++i){//普通情况list[j][i] = triangle.get(j).get(i)+Math.min(list[j-1][i-1],list[j-1][i]);}list[j][j] = triangle.get(j).get(j)+list[j-1][j-1];}int result = Integer.MAX_VALUE;for(int i = 0;i< len;++i){result = Math.min(result,list[len-1][i]);}return result;}
}
时间: 击败了77.67%
内存: 击败了42.52%
64.最小路径和
题意:
给定一个包含非负整数的
m x n网格grid,请找出一条从左上角到右下角的路径,使得路径上的数字总和为最小。说明:每次只能向下或者向右移动一步。
【输入样例】grid = [[1,3,1],[1,5,1],[4,2,1]]
【输出样例】7
解题思路:
1. 定义一个新的二维list,list[i][j]表示在第i行中第j列得到的最小路径和是多少
2. 边遍历grid边计算,直到整个grid遍历完毕,输出list[m-1][n-1]即可
3. 动态规划的规律,是list[i][j] = grid[i][j] + Math.min(list[i-1][j],list[i][j-1]);
4. 动态规划的初始化,只能向下或向右走,那么第一行,第一列的值是固定的,list[0][0] = grid[0][0]; list[0][j] = list[0][j-1]+grid[0][j]; list[i][0] = list[i-1][0]+grid[i][0]
class Solution {public int minPathSum(int[][] grid) {int m = grid.length;int n = grid[0].length;int[][] list = new int[m][n];list[0][0] = grid[0][0];for(int i=1;i<m;++i){//第一列赋值list[i][0] = list[i-1][0] + grid[i][0];}for(int j=1;j<n;++j){//第一行赋值list[0][j] = list[0][j-1] + grid[0][j];}for(int i = 1; i< m; ++i){for(int j = 1; j < n; ++j){list[i][j] = grid[i][j] + Math.min(list[i-1][j],list[i][j-1]);}}return list[m-1][n-1];}
}
时间: 击败了93.62%
内存: 击败了18.20%
63.不同路径Ⅱ
题意:
一个机器人位于一个
m x n网格的左上角 (起始点在下图中标记为 “Start” )。机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为 “Finish”)。
现在考虑网格中有障碍物。那么从左上角到右下角将会有多少条不同的路径?
网格中的障碍物和空位置分别用
1和0来表示。
【输入样例】obstacleGrid = [[0,0,0],[0,1,0],[0,0,0]]
【输出样例】2
解题思路:
1. 定义一个新的二维list,list[i][j]表示走到第i行中第j列的路径数
2. 边遍历obstacleGrid边计算,直到整个obstacleGrid遍历完毕,输出list[m-1][n-1]即可
3. 动态规划的规律,是当obstacleGrid[i][j] == 0时 list[i][j] = list[i-1][j]+list[i][j-1];路径数要相加,
如果obstacleGrid[i][j]==1 ,将list[i][j] 赋值为0
4. 动态规划的初始化,list[0][0] = 1; 只能向下或向右走,那么第一行,第一列的值是固定的,如果说第一行和第一列没有障碍,全部都为1,如果存在障碍,障碍之后的都为0.
class Solution {public int uniquePathsWithObstacles(int[][] obstacleGrid) {int m = obstacleGrid.length;int n = obstacleGrid[0].length;int[][] list = new int[m][n];if(obstacleGrid[0][0] == 1 || obstacleGrid[m-1][n-1] == 1){return 0;}list[0][0] = 1;for(int i=1;i<m && obstacleGrid[i][0] == 0;++i){//开始判断第一列的初始值list[i][0] = 1;}for(int j=1;j<n && obstacleGrid[0][j] == 0 ;++j){//开始判断第一行的初始值list[0][j] = 1;}//开始剩余格子的路径数for(int i=1;i < m; ++i){for(int j=1; j < n; ++j){list[i][j] = obstacleGrid[i][j] == 1 ? 0 : list[i-1][j]+list[i][j-1];}}return list[m-1][n-1];}
}
时间: 击败了100.00%
内存: 击败了29.85%
5.最长回文子串
题意:
给你一个字符串
s,找到s中最长的回文子串。如果字符串的反序与原始字符串相同,则该字符串称为回文字符串。
提示:
1 <= s.length <= 1000s仅由数字和英文字母组成
【输入样例】s="babad"
【输出样例】"bab" 或 "aba"
解题思路:
这题,嗯,做不太出来,参考了官方解题
自己就是把理解的地方多写了一点备注
class Solution {public String longestPalindrome(String s) {int len = s.length();if(len < 2){return s;}int maxLen = 1;int begin = 0;//dp[i][j]表示s[i..j]是否是回文串boolean[][] dp = new boolean[len][len];//初始化,所有长度为1的字串都是回文串for(int i=0; i<len; ++i){dp[i][i] = true;}char[] charArray = s.toCharArray();//先枚举字串长度for(int L = 2; L <= len; L++){//枚举左边界for(int i=0; i< len; ++i){//由L和i确定右边界,即j-i+1=Lint j = L + i - 1;//如果右边界越界,就可以退出当前循环if(j >= len){break;}if(charArray[i] != charArray[j]){dp[i][j] = false;}else{if(j-i < 3){//这种情况一定是回文串//j-i=0,表示只有一个字符x//j-i=1,两个字符xx,这里已知相等//j-i=2,三个字符,已知最左和最右相等,中间无所谓,即xyxdp[i][j] = true;}else{//此时其是不是回文串,取决于中间部分是不是回文串dp[i][j] = dp[i+1][j-1];}}if(dp[i][j] && j-i+1>maxLen){maxLen = j-i+1;begin = i;}}}return s.substring(begin,begin+maxLen);}
}
时间: 击败了22.23%
内存: 击败了30.02%
相关文章:
【LeetCode-面试经典150题-day21】
目录 120.三角形最小路径和 64.最小路径和 63.不同路径Ⅱ 5.最长回文子串 120.三角形最小路径和 题意: 给定一个三角形 triangle ,找出自顶向下的最小路径和。 每一步只能移动到下一行中相邻的结点上。相邻的结点 在这里指的是 下标 与 上一层结点下标…...
算法刷题记录-双指针/滑动窗口(LeetCode)
809. Expressive Words 思路 根据题目描述,我们可以知道,如果要将某个单词定义为可扩张(stretchy),需要满足如下两个条件: 所以,我们在实现的时候,可以通过两个指针p1和p2&#x…...
Python基础tuple元组定义与函数
元组的特点 有序:元组中的元素是按照顺序排列的。不可更改:一旦创建,元组中的元素不可被修改、增加或删除。元素类型多样化:元组可以包含任何数据类型的元素。 定义一个非空元组 name_tuple (a, b, c, d)定义一个空元组 name…...
【linux命令讲解大全】088.深入理解 shell 脚本中的 trap 命令
文章目录 trap概要主要用途选项参数返回值关于信号例子 从零学 python trap 捕捉信号和其他事件并执行命令。 概要 trap [-lp] [[arg] signal_spec ...]主要用途 用于指定在接收到信号后将要采取的动作。 脚本程序被中断时执行清理工作。 选项 -l:打印信号名称…...
bean的管理-bean的获取
获取bean 默认情况下,在Spring项目启动时,会把bean都创建好(但是还会受到作用域及延迟初始化的影响)放在IOC容器中,如果想主动获取这些bean,可以通过如下方式 根据name获取bean Object getBean(…...
如何快速清理已经上传到Git仓库的.DS_Store文件
很久以前,发过这样一篇文章《Git全局忽略MacOS系统下的.DS_Store文件》,主要是针对MacOS用户,如何方便的在自己机器中免疫所有.DS_Store文件的误提交。如果有这个需求,且还没有搞过的读者可以通过上面这篇文章学习。 今天想要分享…...
美的的笔试
第一题 有两只猫咪和n条不同类型的鱼,每条鱼都只能被其中一只猫咪吃掉。 下标为i处的鱼被吃掉的得分为: 如果第一只猫咪吃掉,则得分为reward1[i]。如果第二只猫咪吃掉,则得分为reward[i]。 给你一个正整数数组reward1 ,一个正整数数组reward2࿰…...
Android 1.2 开发环境搭建
目录 1.2 开发环境搭建 1.JDK安装与配置 2.开发工具二选一 3.相关术语的解析 4.ADB命令行的一些指令 5.APP程序打包与安装的流程: 6.APP的安装过程: 7.本节小结 1.2 开发环境搭建 现在主流的Android开发环境有: ①Eclipse ADT SDK ②Android Stu…...
vue 页面加水印
首先创建一个waterMark.js文件,当然文件命名可自定义, use strictconst watermark {}/**** param {要设置的水印的内容} str* param {需要设置水印的容器} container*/ const setWatermark (str, container) > {const id 1.23452384164.123412415…...
Android ImageView详解
scaleType属性详解 在 Android 中,ImageView 控件的 scaleType 属性用于指定图像在 ImageView 内部的缩放和对齐方式。scaleType 属性可以帮助你控制图像的显示方式,以适应 ImageView 的尺寸或实现其他特定的显示效果。以下是常见的 scaleType 属性值和…...
ElasticSearch第二讲:ES详解 - ElasticSearch基础概念
ElasticSearch第二讲:ES详解 - ElasticSearch基础概念 在学习ElasticSearch之前,先简单了解下ES流行度,使用背景,以及相关概念等。本文是ElasticSearch第二讲,ElasticSearch的基础概念。 文章目录 ElasticSearch第二讲…...
Ajax模拟视频点赞功能
前台 <%--Created by IntelliJ IDEA.User: xxDate: 2023/9/4Time: 10:00To change this template use File | Settings | File Templates. --%> <% page contentType"text/html;charsetUTF-8" language"java" %> <html> <head>&l…...
java解决 衣服尺码 Compare T-Shirt Sizes
java解决衣服尺码 时间限制:3000MS 内存限制:589824KB 题目描述: 一般来说衣服尺码分为L,M,S三种,分别代表大(Large),中(Medium)和小(Small)。不过由于人的身高差异性较大,尺码又会…...
基于python+Django深度学习的音乐推荐方法研究系统设计与实现
摘 要 数字化时代带动着整个社会的信息化发展,随着数字媒体的不断发展,现在通多媒体数字产品的内容越来越丰富,传播影响力越来越强,以音乐为例,现在的音乐文化多样、音乐资源也异常的丰富,在这种大数据的环…...
【枚举区间+线段树】CF Ehu 152 E
Problem - E - Codeforces 题意: 思路: 感觉是个套路题 对区间计数,按照CF惯用套路,枚举其中一个端点,对另一个端点计数 对于这道题,枚举右端点,对左端点计数 Code: #include &…...
宏定义天坑记录
宏定义天坑记录 事件原委与推理过程 在编译一个使用了Protobuf的项目时出现了如下报错 [ybVM-8-7-centos boost_searcher]$ make g -o http_server http_server.cc data/raw_html.pb.cc -stdc11 -lboost_system -lboost_filesystem -lpthread -ljsoncpp -lprotobuf In file…...
Git的一些常用概念与操作方法分享
Git是一个版本控制系统,它可以记录代码的变化历史并允许多个开发者同时对同一代码库进行开发。以下是Git的基本概念和使用方式: 仓库(Repository)- 保存代码的地方。Git仓库包含了所有的版本历史记录、代码以及其他相关文件。 分…...
webpack实战:某网站JS逆向分析
文章目录 1. 写在前面2. 抓包分析3. 扣加密代码 1. 写在前面 好的逆向能够帮助我们了解加密实现,然后根据加密方式(md5,base64,res,des,rsa…)还原加密算法的过程。可以看看我之前的这篇文章:快速定位查找加密方式特征与技巧 目标站点&#…...
826. 安排工作以达到最大收益;2257. 统计网格图中没有被保卫的格子数;816. 模糊坐标
826. 安排工作以达到最大收益 核心思想:排序维护最大利润。首先我们需要对工人按照能力排序,前面工人满足的最大利润后面的工人肯定是满足的,所以我们只需要用一个tmp来维护小于等于当前工人的最大利润,然后如何得到tmpÿ…...
JAVA毕业设计097—基于Java+Springboot+Vue+uniapp的医院挂号小程序系统(源码+数据库)
基于JavaSpringbootVueuniapp的医院挂号小程序系统(源码数据库)097 一、系统介绍 本系统前后端分离(网页端和小程序端都有) 本系统分为管理员、医院、用户三种角色(角色菜单可自行分配) 用户功能: 注册、登录、医院搜索、最新资讯、医生搜索、挂号预约、挂号记…...
【Python】 -- 趣味代码 - 小恐龙游戏
文章目录 文章目录 00 小恐龙游戏程序设计框架代码结构和功能游戏流程总结01 小恐龙游戏程序设计02 百度网盘地址00 小恐龙游戏程序设计框架 这段代码是一个基于 Pygame 的简易跑酷游戏的完整实现,玩家控制一个角色(龙)躲避障碍物(仙人掌和乌鸦)。以下是代码的详细介绍:…...
【决胜公务员考试】求职OMG——见面课测验1
2025最新版!!!6.8截至答题,大家注意呀! 博主码字不易点个关注吧,祝期末顺利~~ 1.单选题(2分) 下列说法错误的是:( B ) A.选调生属于公务员系统 B.公务员属于事业编 C.选调生有基层锻炼的要求 D…...
解决本地部署 SmolVLM2 大语言模型运行 flash-attn 报错
出现的问题 安装 flash-attn 会一直卡在 build 那一步或者运行报错 解决办法 是因为你安装的 flash-attn 版本没有对应上,所以报错,到 https://github.com/Dao-AILab/flash-attention/releases 下载对应版本,cu、torch、cp 的版本一定要对…...
LangChain知识库管理后端接口:数据库操作详解—— 构建本地知识库系统的基础《二》
这段 Python 代码是一个完整的 知识库数据库操作模块,用于对本地知识库系统中的知识库进行增删改查(CRUD)操作。它基于 SQLAlchemy ORM 框架 和一个自定义的装饰器 with_session 实现数据库会话管理。 📘 一、整体功能概述 该模块…...
TSN交换机正在重构工业网络,PROFINET和EtherCAT会被取代吗?
在工业自动化持续演进的今天,通信网络的角色正变得愈发关键。 2025年6月6日,为期三天的华南国际工业博览会在深圳国际会展中心(宝安)圆满落幕。作为国内工业通信领域的技术型企业,光路科技(Fiberroad&…...
【前端异常】JavaScript错误处理:分析 Uncaught (in promise) error
在前端开发中,JavaScript 异常是不可避免的。随着现代前端应用越来越多地使用异步操作(如 Promise、async/await 等),开发者常常会遇到 Uncaught (in promise) error 错误。这个错误是由于未正确处理 Promise 的拒绝(r…...
uniapp 小程序 学习(一)
利用Hbuilder 创建项目 运行到内置浏览器看效果 下载微信小程序 安装到Hbuilder 下载地址 :开发者工具默认安装 设置服务端口号 在Hbuilder中设置微信小程序 配置 找到运行设置,将微信开发者工具放入到Hbuilder中, 打开后出现 如下 bug 解…...
规则与人性的天平——由高考迟到事件引发的思考
当那位身着校服的考生在考场关闭1分钟后狂奔而至,他涨红的脸上写满绝望。铁门内秒针划过的弧度,成为改变人生的残酷抛物线。家长声嘶力竭的哀求与考务人员机械的"这是规定",构成当代中国教育最尖锐的隐喻。 一、刚性规则的必要性 …...
土建施工员考试:建筑施工技术重点知识有哪些?
《管理实务》是土建施工员考试中侧重实操应用与管理能力的科目,核心考查施工组织、质量安全、进度成本等现场管理要点。以下是结合考试大纲与高频考点整理的重点内容,附学习方向和应试技巧: 一、施工组织与进度管理 核心目标: 规…...
[特殊字符] 手撸 Redis 互斥锁那些坑
📖 手撸 Redis 互斥锁那些坑 最近搞业务遇到高并发下同一个 key 的互斥操作,想实现分布式环境下的互斥锁。于是私下顺手手撸了个基于 Redis 的简单互斥锁,也顺便跟 Redisson 的 RLock 机制对比了下,记录一波,别踩我踩过…...

