【算法题】2400. 恰好移动 k 步到达某一位置的方法数目

这篇具有很好参考价值的文章主要介绍了【算法题】2400. 恰好移动 k 步到达某一位置的方法数目。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

题目:

给你两个 正 整数 startPos 和 endPos 。最初,你站在 无限 数轴上位置 startPos 处。在一步移动中,你可以向左或者向右移动一个位置。

给你一个正整数 k ,返回从 startPos 出发、恰好 移动 k 步并到达 endPos 的 不同 方法数目。由于答案可能会很大,返回对 109 + 7 取余 的结果。

如果所执行移动的顺序不完全相同,则认为两种方法不同。

注意:数轴包含负整数。

示例 1:

输入:startPos = 1, endPos = 2, k = 3
输出:3
解释:存在 3 种从 1 到 2 且恰好移动 3 步的方法:

  • 1 -> 2 -> 3 -> 2.
  • 1 -> 2 -> 1 -> 2.
  • 1 -> 0 -> 1 -> 2.
    可以证明不存在其他方法,所以返回 3 。
    示例 2:

输入:startPos = 2, endPos = 5, k = 10
输出:0
解释:不存在从 2 到 5 且恰好移动 10 步的方法。

提示:

1 <= startPos, endPos, k <= 1000

思路:

动态规划,因为要考虑负数,再考虑k的范围,整体加上1000,dp[i+1000][j]表示到达位置i,花费j步的方案数。文章来源地址https://www.toymoban.com/news/detail-426588.html

java代码:

class Solution {
  int mod = (int) 1E9 + 7;

  public int numberOfWays(int startPos, int endPos, int k) {
    long[][] dp = new long[3005][1005];
    dp[startPos + 1 + 1000][1] = 1;
    dp[startPos - 1 + 1000][1] = 1;
    for (int i = 2; i <= k; i++) {
      for (int j = 1000 + startPos - k; j <= 1000 + startPos + k; j++) {
        dp[j][i] = dp[j - 1][i - 1] + dp[j + 1][i - 1];
        dp[j][i] %= mod;
      }
    }
    return (int) dp[1000 + endPos][k];
  }
}

到了这里,关于【算法题】2400. 恰好移动 k 步到达某一位置的方法数目的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【python】【pandas】dataframe把某一列放到第一列,或者把某一列插入到某位置

    输出结果: 在上述代码中,我们首先选择要移动到第一列的列名(这里选择了\\\'Age\\\'列)。然后,我们使用 pd.concat() 函数将选定的列与剩余的列连接起来,其中 axis=1 表示按列进行连接。 df.drop(columns=first_col) 将删除原始DataFrame中选定的列,以便在连接时只保留选定的列。 输出

    2024年02月13日
    浏览(55)
  • 汉明距离,两个整数之间的 汉明距离 指的是这两个数字对应二进制位不同的位置的数目。

    题记: 两个整数之间的 汉明距离 指的是这两个数字对应二进制位不同的位置的数目。 给你两个整数 x 和 y,计算并返回它们之间的汉明距离。 示例 1: 输入 :x = 1, y = 4 输出 :2 解释 : 1 (0 0 0 1) 4 (0 1 0 0) ------↑— ↑ 上面的箭头指出了对应二进制位不同的位置。 示例 2:

    2024年02月15日
    浏览(43)
  • 修复Microsoft Edge上“无法到达此页面”错误的5种方法

    这里有五种方法来修复Microsoft Edge的“无法到达此页面”错误,以防你曾经在浏览器上遇到过这个错误。 尽管Edge是仅次于Chrome的第二大流行浏览器,但它也有一些故障。在使用Edge可能会遇到的许多问题中,一个恼人的问题是当访问一个网页时,会得到“嗯,我们无法到达这

    2024年02月05日
    浏览(33)
  • 小程序 页面刷新后自动滚回到页面某一位置:scroll-view中scroll-into-view的使用

    情景描述:编辑一长列表时,需要重刷页面,希望重刷后自动跳转回原位置。 遇到的问题:分页情况下,固定的scroll-into-view值无法唤起加载更多。 uniapp官网中scroll-view描述如下: scroll-view | uni-app官网 (dcloud.io) https://uniapp.dcloud.io/component/scroll-view.html#scroll-view 不多赘述,直接

    2024年02月09日
    浏览(51)
  • 【算法题】2348. 全 0 子数组的数目

    给你一个整数数组 nums ,返回全部为 0 的 子数组 数目。 子数组 是一个数组中一段连续非空元素组成的序列。 示例 1: 输入:nums = [1,3,0,0,2,0,0,4] 输出:6 解释: 子数组 [0] 出现了 4 次。 子数组 [0,0] 出现了 2 次。 不存在长度大于 2 的全 0 子数组,所以我们返回 6 。 示例 2:

    2023年04月24日
    浏览(39)
  • 详细介绍雷达到达角估计算法3DFFT,DBF,MUSIC,Capon的原理、对比、各自的优势

    目录 3DFFT DBF MUSIC Capon 优缺点          雷达到达角估计是雷达信号处理中的一个重要问题,旨在确定来自目标的雷达信号的到达角度。雷达到达角估计算法可以分为时域方法和频域方法两种类型。其中,频域方法可以进一步分为基于阵列信号处理的方法和基于普通雷达信号

    2024年02月04日
    浏览(51)
  • 华为OD机试 - 最快到达医院的方法(Java & JS & Python & C & C++)

    哈喽,本题库完全免费,收费是为了防止被爬,大家订阅专栏后可以私信联系退款。感谢支持 新型冠状病毒疫情的肆虐,使得家在武汉的大壮不得不思考自己家和附近定点医院的具体情 况。经过一番调查,大壮明白了距离自己家最近的定点医院有两家。其中: 医院 A 和自己的

    2024年04月08日
    浏览(78)
  • 已解决java.net.NoRouteToHostException: 无法到达主机异常的正确解决方法,亲测有效!!!

    已解决java.net.NoRouteToHostException: 无法到达主机异常的正确解决方法,亲测有效!!! 目录 问题分析 报错原因 解决思路 解决方法 检查网络连接 核实目标地址 检查防火墙和路由器规则 验证VPN/代理设置 修正网络配置 总结  博主v:XiaoMing_Java java.net.NoRouteToHostException 是一种在

    2024年04月26日
    浏览(34)
  • 【算法题】2790. 长度递增组的最大数目

    给你一个下标从 0 开始、长度为 n 的数组 usageLimits 。 你的任务是使用从 0 到 n - 1 的数字创建若干组,并确保每个数字 i 在 所有组 中使用的次数总共不超过 usageLimits[i] 次。此外,还必须满足以下条件: 每个组必须由 不同 的数字组成,也就是说,单个组内不能存在重复的数

    2024年02月15日
    浏览(33)
  • 【算法题】2537. 统计好子数组的数目

    给你一个整数数组 nums 和一个整数 k ,请你返回 nums 中 好 子数组的数目。 一个子数组 arr 如果有 至少 k 对下标 (i, j) 满足 i j 且 arr[i] == arr[j] ,那么称它是一个 好 子数组。 子数组 是原数组中一段连续 非空 的元素序列。 示例 1: 输入:nums = [1,1,1,1,1], k = 10 输出:1 解释:唯

    2023年04月09日
    浏览(37)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包