【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 一、系统介绍 本系统前后端分离(网页端和小程序端都有) 本系统分为管理员、医院、用户三种角色(角色菜单可自行分配) 用户功能: 注册、登录、医院搜索、最新资讯、医生搜索、挂号预约、挂号记…...
如何通过智能包装系统提升全链条的数字化与协同效率?
本段聚焦全链条数字化升级的核心路径,通过 智能包装系统实现 原材料到成品的数据共享与流程对齐。以原材料入库、生产、成品出库为主线,建立统一的数据模型、模块化接口与可追溯闭环,推动 协同优化与成本控制。结合 中科天工智能包装设备与 中…...
基于Zynq FPGA的2-FSK基带发射器设计与实现
1. 项目概述与核心思路最近在折腾一个基于Zynq的软件定义无线电(SDR)小项目,核心需求很简单:用硬件逻辑生成一个可调频率的正弦波,并通过DAC输出。这听起来像是数字信号处理的入门练习,但我的目标更具体一点…...
大模型上下文窗口管理技巧:突破长度限制的艺术
大模型上下文窗口管理技巧:突破长度限制的艺术 前言 大模型的上下文窗口(Context Window)是指模型能够处理的最大输入长度。目前主流模型的上下文窗口从 4K 到 128K 不等,GPT-4 Turbo 甚至达到了 128K tokens。然而,随…...
千川素材外包月烧3万,转易元AI自产省70%成本,跑量还更猛——真实账单对比
很多商家做千川投放时,最开始以为最贵的是投流预算,后来才发现,真正长期烧钱的其实是素材。计划每天要新视频,爆款跑起来要裂变,素材疲劳了要补货,全域推广还要不同场景、不同卖点、不同人群的素材矩阵。外…...
告别丢包!手把手教你用Vivado/PLL调优RTL8211的RXC时钟相位(FPGA千兆以太网篇)
FPGA千兆以太网时序优化实战:用PLL驯服RTL8211的RXC时钟相位 当你在调试FPGA与RTL8211千兆以太网PHY芯片的RGMII接口时,是否遇到过这样的场景:硬件连接一切正常,链路也能正常建立,但就是会随机出现数据包丢失或CRC校验…...
你的打印机“糊”了?可能是半色调没调好!详解HP/佳能/Epson的驱动设置与图像预处理
你的打印机“糊”了?可能是半色调没调好!详解HP/佳能/Epson的驱动设置与图像预处理 当精心修图的照片在打印机上输出后出现奇怪的网格纹路,或是设计稿的渐变区域出现明显色阶断层时,多数用户的第一反应往往是怀疑打印机硬件故障。…...
别再死记硬背了!用‘榨汁机’和‘张三的饭量’搞定高数函数定义域(附3类题型解法)
用生活化思维破解高数函数定义域:从榨汁机到张三的饭量 第一次翻开高等数学教材时,那些密密麻麻的函数符号让我头晕目眩。直到有一天,我在厨房榨果汁时突然顿悟——原来函数就像一台榨汁机,而定义域不过是张三在不同状态下的饭量。…...
BetterDiscord Installer完全指南:如何一键安装和优化Discord插件
BetterDiscord Installer完全指南:如何一键安装和优化Discord插件 【免费下载链接】Installer A simple standalone program which automates the installation, removal and maintenance of BetterDiscord. 项目地址: https://gitcode.com/gh_mirrors/ins/Instal…...
程序员的职场心态:如何应对代码bug和项目延期
在软件研发的全流程中,测试与开发如同孪生兄弟,紧密协作又时常因问题产生摩擦。作为软件测试从业者,我们既是bug的“捕手”,也是项目进度的“监督者”,更需要成为程序员职场心态的“理解者”与“协同者”。深入剖析程序…...
数据架构演进:从数据仓库到湖仓一体与流批融合实战
1. 从“数据仓库”到“数据湖”:一场思维范式的革命干了十几年数据,从最早的Oracle报表,到后来的Hadoop集群,再到现在的云原生数据平台,我亲眼见证了数据架构这十几年的风云变幻。如果说大数据时代的开启是一声惊雷&am…...

