动态规划理论基础和习题【力扣】【算法学习day.23】

前言

###我做这类文档一个重要的目的还是给正在学习的大家提供方向(例如想要掌握基础用法,该刷哪些题?)我的解析也不会做的非常详细,只会提供思路和一些关键点,力扣上的大佬们的题解质量是非常非常高滴!!!


习题

1.不同路径II

题目链接:63. 不同路径 II - 力扣(LeetCode)

题面:

基本分析:和上一篇文章的同步路径项目,只需要知道如果A点是障碍点,那么到A的路径条数为0,如果A在第一行或者第一列,那么A点在第一行的后面的点和在第一列下面的点的路径为0 

代码:

class Solution {public int uniquePathsWithObstacles(int[][] obstacleGrid) {return dfs(new HashMap<Pair,Integer>(), obstacleGrid, 0, 0);}private int dfs(Map<Pair,Integer> cache, int[][] arr, int i, int j) {Pair p = new Pair(i,j);if(cache.containsKey(p))return cache.get(p);if(i>=arr.length||j>=arr[0].length||arr[i][j]==1)return 0;if(i==arr.length-1&&j==arr[0].length-1)return 1;int ref = dfs(cache,arr,i+1,j)+dfs(cache,arr,i,j+1);cache.put(p,ref);return ref;}
}

2.整数拆分

题目链接:343. 整数拆分 - 力扣(LeetCode)

题面:

基本分析:数学分析可知,要尽可能拆分为3,如果余数是2,就要返回一个3并拆成2*2,因为2*2>1*3,至于为什么,详细可前往力扣题解页看大佬证明

代码:

class Solution {int[] arr;public int integerBreak(int n) {if(n==2)return 1;if(n==3)return 2;if(n==4)return 4;int flag = 1;while(n-3>=0){flag*=3;n-=3;}if(n==2)return flag*2;if(n==1){flag/=3;return flag*4;}return flag;}}

后言

上面是动态规划的基本概念和部分习题,下一篇会有其他习题,希望有所帮助,一同进步,共勉!   

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

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

相关文章

Docker:介绍与安装

Docker官网与仓库地址 docker官网&#xff1a;http://www.docker.comopenDocker Hub官网: https://hub.docker.com/open Docker三要素 镜像 (Image) 镜像是Docker的核心概念之一&#xff0c;它是不可变的、只读的&#xff0c;并包含了一套文件系统&#xff0c;里面包含了运…

基于SpringBoot的微信小程序学生运动打卡系统【附源码】

基于SpringBoot的微信小程序学生运动打卡系统 效果如下&#xff1a; 系统主页面 论坛页面 登陆页面 我的页面 系统登录页面 管理员主页面 公告信息页面 研究背景 随着数字化时代的到来&#xff0c;大学生的生活节奏日益加快&#xff0c;学习压力与社交活动并行不悖。如何在繁…

【go从零单排】go中的nil到底是啥意思?

Don’t worry , just coding! 内耗与overthinking只会削弱你的精力&#xff0c;虚度你的光阴&#xff0c;每天迈出一小步&#xff0c;回头时发现已经走了很远。 nil 在Go语言中&#xff0c;nil 是一个预定义的标识符&#xff0c;用于表示指针、切片、映射、通道、接口和函数的…

forEach可以遍历不可枚举属性吗

首先第一个问题,forEach能不能遍历对象的属性 const obj { a: 1, b: 2, c: 3 }; obj.forEach((item) > console.log(item))运行这段代码我们发现发生了一个错误 这说明forEach是不可以遍历对象的属性的 在js中,forEach 方法用于遍历数组或类数组对象&#xff08;如 NodeL…

书生大模型实战营第四期-入门岛-1. Linux前置基础

入门岛-Linux前置基础 书生大模型实战营-第四期-Linux前置基础&#xff1a; 任务&#xff1a;https://github.com/InternLM/Tutorial/blob/camp4/docs/L0/linux/task.md 文档&#xff1a;https://github.com/InternLM/Tutorial/tree/camp4/docs/L0/linux 任务描述完成所需时…

Webserver(4.9)本地套接字的通信

目录 本地套接字 本地套接字 TCP\UDP实现不同主机、网络通信 本地套接字实现本地的进程间的通信&#xff0c;类似的&#xff0c;一般采用TCP的通信流程 生成套接字文件 #include<arpa/inet.h> #include<stdio.h> #include<stdlib.h> #include<unistd.h&…

ubuntu22.04 docker-compose搭建apisix高可用

首先你得先确保每台主机安装了docker和docker-compose 3台主机 没有安装docker和docker-compose的可以看我前两篇博客 可以先克隆仓库 git clone https://github.com/apache/apisix-docker.git 进入example目录 拷贝dashboard配置文件 将all-in-one中apisix-dashboard文件夹拷…

stable diffusion 大模型

本节内容&#xff0c;给大家带来的是stable diffusion的基础模型课程。基础模型&#xff0c;我们有时候也称之为大模型。在之前的课程中&#xff0c;我们已经多次探讨过大模型&#xff0c;并且也见识过一些大模型绘制图片的独特风格&#xff0c;相信大家对stable diffusion大模…

AI-Prompt、RAG、微调还是重新训练?选择正确的生成式AI的使用方法

生成式人工智能正在快速发展&#xff0c;许多人正在尝试使用这项技术来解决他们的业务问题。一般情况下有4种常见的使用方法&#xff1a; Prompt Engineering Retrieval Augmented Generation (RAG 检索增强生成) 微调 从头开始训练基础模型(FM) 本文将试图根据一些常见的…

数字化装配助力柔性制造与快速换型,驱动效率飞跃

数字化装配是利用先进的数字化技术&#xff0c;如三维建模、仿真分析、物联网、大数据、人工智能等&#xff0c;对装配过程进行精确设计、优化控制和智能管理的一种现代化生产方式。它打破传统装配依赖于人工经验和物理样机的局限&#xff0c;通过模拟环境进行预装配验证&#…

软件测试学习笔记丨Vue常用指令-输入绑定(v-model)

本文转自测试人社区&#xff0c;原文链接&#xff1a;https://ceshiren.com/t/topic/23461 指令 指令是将一些特殊行为应用到页面DOM元素的特殊属性 格式都是以v-开始的&#xff0c;例如&#xff1a; v-model&#xff1a;双向绑定v-if和v-else&#xff1a;元素是否存在v-sho…

关于“浏览器”上不了网的问题

一、起因 小编的笔记本电脑浏览器又坏了&#xff0c;所有浏览器都上不了网&#xff1f;&#xff1f;&#xff1f;&#xff08;当然了WIFI已连接&#xff09; 但是微信可以正常发消息 因为上次也有过&#xff0c;这次又出现了&#xff0c;所以小编写篇文章记录一下解决方法 二…

自动化神器:如何用Markdown写自动化用例!

01 什么是Gauge Gauge是一款用于编写和运行验收测试的BDD框架&#xff0c;它有如下的特点&#xff1a; 使用Markdown的简单、灵活的语法来描述行为 支持多平台&#xff08;Windows、Linux、macOS&#xff09;、多语言(C#、Java、Javascript、Python、Ruby&#xff09; 支持插…

Facebook定位不准是什么原因?

不知道出海获客的小伙伴有没有人跟我遇到一样的问题&#xff1a;Facebook账号定位与IP地位不一致。定位不准确会导致无法看到账号好友&#xff0c;并且账号可能很快受限&#xff0c;无法正常使用。所以解决这个问题是当务之急&#xff0c;下面分享一下可能出现这个情况的原因以…

从计划到完成:最佳Todolist任务管理软件全指南

在工作节奏越来越快的今天&#xff0c;如何有效地管理任务&#xff0c;清晰安排每一步骤&#xff0c;成了每个职场人士提升效率的关键。特别是对于任务繁杂、需要多团队协作的互联网企业来说&#xff0c;一款好用的任务管理软件无疑是提升生产力的利器。本文将为大家深入测评几…

Mysql的行锁,改一行锁一行

目录标题 前言行级锁1. 共享锁&#xff08;Shared Lock&#xff09;2. 排他锁&#xff08;Exclusive Lock&#xff09; 行级锁中的死锁&#xff08;Dead Lock&#xff09;现象行级锁虽好&#xff0c;但有时候会升级成表级锁第一种情况&#xff0c;当未命中索引时&#xff0c;行…

十五 MyBatis的逆向工程

十五、MyBatis的逆向工程 所谓的逆向工程是&#xff1a;根据数据库表逆向生成Java的pojo类&#xff0c;SqlMapper.xml文件&#xff0c;以及Mapper接口类等。 要完成这个工作&#xff0c;需要借助别人写好的逆向工程插件。 思考&#xff1a;使用这个插件的话&#xff0c;需要…

易快报与金蝶云星空无缝集成的技术实现

易快报与金蝶云星空无缝集成的技术实现 易快报员工对接金蝶员工&#xff1a;数据集成技术案例分享 在企业信息化建设中&#xff0c;数据的高效流动和准确对接是实现业务流程自动化的关键。本文将聚焦于一个具体的系统对接集成案例——易快报员工数据集成到金蝶云星空&#xff…

day-81 排序链表

思路 用一个List存储链表中的值&#xff0c;然后进行升序排序&#xff0c;最后将链表中值依次改为排序后的值即可 Code /*** Definition for singly-linked list.* public class ListNode {* int val;* ListNode next;* ListNode() {}* ListNode(int val) { …

【零基础小白】 window环境下安装RabbitMQ

RabbitMQ环境安装 RabbitMQ是用Erlang语言编写的&#xff0c;因此在安装RabbitMQ之前&#xff0c;需要先安装Erlang环境。 一、 安装Erlang环境 1、准备工作 确定Erlang版本&#xff1a;根据具体需求以及必须和RabbitMQ版本一致安装符合的Erlang版本。 RabbitMQ 和 Erlang 的版…