Leetcode--5274. 停在原地的方案数

有一个长度为 arrLen 的数组,开始有一个指针在索引 0 处。

每一步操作中,你可以将指针向左或向右移动 1 步,或者停在原地(指针不能被移动到数组范围外)。

给你两个整数 steps 和 arrLen ,请你计算并返回:在恰好执行 steps 次操作以后,指针仍然指向索引 0 处的方案数。

由于答案可能会很大,请返回方案数 模 10^9 + 7 后的结果。

 

示例 1:

输入:steps = 3, arrLen = 2
输出:4
解释:3 步后,总共有 4 种不同的方法可以停在索引 0 处。
向右,向左,不动
不动,向右,向左
向右,不动,向左
不动,不动,不动
示例  2:

输入:steps = 2, arrLen = 4
输出:2
解释:2 步后,总共有 2 种不同的方法可以停在索引 0 处。
向右,向左
不动,不动
示例 3:

输入:steps = 4, arrLen = 2
输出:8
 

提示:

1 <= steps <= 500
1 <= arrLen <= 10^6

思路:动态规划

x表示当前允许走的步数,pos表示当前所处的位置

dp(x,pos)的值只能由三种方法得到,左边那个位置右移一步,右边那个位置左移一步,当前点不动一下

dp(x,pos)=dp(x−1,pos−1)+dp(x−1,pos)+dp(x−1,pos+1)

提交的代码:

class Solution {

    public int numWays(int steps, int arrLen) {

        int i,j;

      int MOD = 1000000007;

            int dp[][] = new int[steps+1][steps+1]; 

/*为什么列长还是steps+1,题上有一个案例的位置给的特别长,会超出内存限制,  但其实想一下,最远的距离不就是你能走的步数总长吗,总共让你走10步,还能跑到20位置吗?不可能的*/

            dp[0][0]=1;

            for(i=1;i<=steps;i++)

            {

                for(j=0;j<=Math.min(i,arrLen-1);j++)

                {

                    dp[i][j]+=dp[i-1][j];

                    if(j>0)

                    {

                        dp[i][j]+=dp[i-1][j-1];

                        dp[i][j]%=MOD;

                    }

                    if(j<Math.min(i,arrLen-1))

                    {

                        dp[i][j]+=dp[i-1][j+1];

                        dp[i][j]%=MOD;

                    }

                }

            }

            return dp[steps][0];

    }

}

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

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

相关文章

c语言多个子函数声明,C函数在多个源文件中的声明和定义

这是src1.c的内容&#xff1a;#include extern int w;//int go(char); // no need to declare here. WHY????main(){char af;go(a);printf("%d\n", w);}这是src2.c的内容&#xff1a;#include int w 99;int go(char t){printf("%c\n%d\n",t,sizeof(t)…

Leetcode--200. 岛屿数量

给定一个由 1&#xff08;陆地&#xff09;和 0&#xff08;水&#xff09;组成的的二维网格&#xff0c;计算岛屿的数量。一个岛被水包围&#xff0c;并且它是通过水平方向或垂直方向上相邻的陆地连接而成的。你可以假设网格的四个边均被水包围。 示例 1: 输入: 11110 11010…

看懂2020年智能浪潮,我们从百度和谷歌的AI足迹出发

来源&#xff1a; 脑极体2020年已经过去&#xff0c;无论我们过得顺遂平安&#xff0c;还是过得无比艰难&#xff0c;我们应该都会记住这一年。回顾2020年&#xff0c;在这个不同寻常的疫情之年&#xff0c;科技成为人类抗击疫情的关键&#xff0c;而人工智能技术投入抗疫战争之…

公交换乘系统c语言,公交换乘的简单实现(源码)

最初是做2004年某期《程序员》杂志上的一道题&#xff0c;叫“洞穴探险”&#xff0c;结果写着写着就做到公交换乘的思路上去了。看来做GIS做久了&#xff0c;都成习惯了。后来工作忙&#xff0c;就扔下了。最近翻看以前自娱自乐时写的东东&#xff0c;看到了这段代码&#xff…

记使用talend从oracle抽取数据时,数字变为0的问题

数据源为oracle&#xff0c;字段类型为number。 发现通过mainline连接到一个logrow控件&#xff0c;输入的该字段的值为0 经过多次测试还是没发现有什么规律。 通过查看代码发现有这一句内容。 if (row2.ID ! null) { //strBuffer_tLogRow_1.append(row2.ID.setScale(-127,java…

Leetcode--494. 目标和

给定一个非负整数数组&#xff0c;a1, a2, ..., an, 和一个目标数&#xff0c;S。现在你有两个符号 和 -。对于数组中的任意一个整数&#xff0c;你都可以从 或 -中选择一个符号添加在前面。 返回可以使最终数组和为目标数 S 的所有添加符号的方法数。 示例 1: 输入: nums…

C语言int r(int m),INT(M)表示什么意思?

根据官方文档描述&#xff0c;int(M)中的M表示数据显示的宽度&#xff0c;与实际存储的长度无关。1、也就是int(3)和int(11)能够存储的数据是一样的&#xff0c;都是从-2147483648到2147483647(或者0-4294967295)。2、int(M)只有联合zerofill参数才能有意义&#xff0c;否则int…

2021年值得关注的人工智能与机器学习的五大趋势

文章来源&#xff1a;科技心时代人工进行智能和机器可以学习是市场上的热门专业技术&#xff0c;其重要性在2020年达到顶峰&#xff0c;这两种信息技术发展已经到了广泛应用在各行业领域&#xff0c;其范围从电子商务到量子计算管理系统&#xff0c;从医疗诊断分析系统到消费电…

关于java子类继承以及final问题总结

(1)子类和父类如果在同一个包内&#xff0c;则子类可以继承父类的除private以外的所有成员变量和方法&#xff0c;并且权限不变&#xff1b; (2)子类和父类如果不在同一个包内&#xff0c;则子类可以继承父类的public和protected权限的成员变量和方法&#xff0c;不能继承友好型…

物理层基本概念

物理层解决如何在连接各种计算机的传输媒体上传输数据比特流 物理层定义了一些传输媒体接口的标准 定义了哪些标准&#xff1f; 1.机械特性 定义物理连接的特性&#xff0c;例如接口形状&#xff0c;引线数目&#xff0c;引脚数量等 2.电气特性 规定传输二进制位时&#…

qt android 应用程序图标大小,vs+qt 设置应用程序图标

LaTeX 学习记录4&#xff0d;字体设置LaTeX 学习记录4&#xff0d;字体设置 % 导言区\documentclass[10pt]{ctexart}%10pt为字体大小%使用ctexart后就可以不引用ctex宏包了\title{\heiti My LaTeX Document}%字体为黑体\author{\kaishu forever}%字体为楷书\date{\today}% 正文…

城市生态的机器人革命

来源&#xff1a; 脑极体城市居民能看到绿色、与自然亲近的机会&#xff0c;被高楼大厦挤压得越来越少&#xff0c;如果有一天&#xff0c;连机器人、无人车和无人机都要来侵占人类的休闲空间&#xff0c;会发生什么呢&#xff1f;至少目前看来&#xff0c;如果不采取措施&…

spring boot 三种入参

先来讲述下最简单的使用get请求用户信息的实现方式&#xff0c;代码如下,写好后直接在Application类点击右键有个RunAs&#xff0c;点击后会自动运行&#xff0c;运行成功后可以使用http发包工具进行测试&#xff0c;这里推荐使用chrome的postman或者使用firefox的httprequeste…

数据通信基础知识

常用的两种入网方式&#xff1a; 1. 电话线入网 电话线发出来的是数字信号&#xff0c;需要用调制解调器(&#x1f431;)转换位模拟信号 例如&#xff1a;我计算机发 在吗 &#xff0c;电话线发出来是01011100&#xff0c; 调制解调器把数字信号转为模拟信号发到广域网 之…

android okhttpclient设置编码,Android之okhttp实现socket通讯(非原创)

文章大纲一、okhttp基础介绍二、socket通讯代码实战三、项目源码下载四、参考文章一、okhttp基础介绍二、socket通讯代码实战1. 添加依赖和权限app的build.gradle下添加okhttp依赖implementation com.squareup.okhttp3:okhttp:3.8.1AndroidManifest.xml文件添加网络权限2. 添加…

张小龙两小时演讲全文:微信十年的产品思考

来源&#xff1a;微信公开课&#xff08;ID&#xff1a;wx-gongkaike&#xff09;文&#xff1a;张小龙大家好&#xff01;谢谢来到公开课现场的朋友们&#xff0c;让我感受到这是一个面对面的交流&#xff0c;而不是一个人面对屏幕的直播。2020&#xff0c;对很多人来说都是很…

Leetcode--113. 路径总和Ⅱ

给定一个二叉树和一个目标和&#xff0c;找到所有从根节点到叶子节点路径总和等于给定目标和的路径。 说明: 叶子节点是指没有子节点的节点。 示例: 给定如下二叉树&#xff0c;以及目标和 sum 22&#xff0c; 5 / \ 4 8 / / \ …

android url格式化,Android利用SpannableString实现格式化微博内容

前言在Android开发中&#xff0c;有许多信息展示需要通过TextView来展现&#xff0c;如果只是普通的信息展现&#xff0c;使用TextView setText(CharSequence str)设置即可&#xff0c;但是当在TextView里的这段内容需要截取某一部分字段&#xff0c;可以被点击以及响应响应的操…

[Unity]限制两个物体之间的距离

//限制两个物体之间的距离 if (Vector3.Distance(B.position, A.position) > maxDistance) {//获得两个物体之间的单位向量Vector3 pos (B.position - A.position).normalized;//单位向量乘以最远的距离系数pos * maxDistance;//物体A的坐标加上距离向量B.position pos A…

Leetcode--226. 翻转二叉树

翻转一棵二叉树。 示例&#xff1a; 输入&#xff1a; 4 / \ 2 7 / \ / \ 1 3 6 9 输出&#xff1a; 4 / \ 7 2 / \ / \ 9 6 3 1 提交的代码&#xff1a; /** * Definition for a binary tree node. * public class TreeNode { *…