当前位置: 首页 > wzjs >正文

做市场调查分析的网站怎么下载需要会员的网站视频

做市场调查分析的网站,怎么下载需要会员的网站视频,上海城市建设和交通委员会网站,如何设计推广方案问题描述 给定一个非负数数组 arr[],每个元素表示从该位置最多可向前跳跃的步数。 示例: 若 arr[i] 3,则可以从位置 i 跳跃到 i1、i2 或 i3。若 arr[i] 0,则无法从该位置向前跳跃。 任务:找到从数组第一个位置移动…

问题描述

给定一个非负数数组 arr[],每个元素表示从该位置最多可向前跳跃的步数。
示例

  • 若 arr[i] = 3,则可以从位置 i 跳跃到 i+1i+2 或 i+3
  • 若 arr[i] = 0,则无法从该位置向前跳跃。

任务:找到从数组第一个位置移动到最后一个位置所需的最小跳跃次数。
注意:若无法到达终点,返回 -1

示例

输入arr[] = [1, 3, 5, 8, 9, 2, 6, 7, 6, 8, 9]
输出3
解释:
第一次从第 1 个元素(值 1)跳到第 2 个元素(值 3)。
第二次从第 2 个元素跳到第 5 个元素(值 9)。
第三次从第 5 个元素跳到终点。

输入arr = [1, 4, 3, 2, 6, 7]
输出2
解释:
第一次从第 1 个元素跳到第 2 个元素,第二次跳到终点。

输入arr = [0, 10, 20]
输出-1
解释: 无法从第一个位置跳跃。

方法 1:递归(时间复杂度 O(nⁿ),空间复杂度 O(n))

核心思想:递归遍历所有可能的跳跃路径,返回最小跳跃次数。

public class JumpGame {// 递归函数:计算从位置i到终点的最小跳跃次数 private static int minJumpsRecursive(int[] arr, int i) {// 终止条件:当前已到达或超过终点 if (i >= arr.length - 1) return 0;int minSteps = Integer.MAX_VALUE;// 遍历所有可能的跳跃步数(1到arr[i]步) for (int j = 1; j <= arr[i]; j++) {int nextPos = i + j;// 递归计算从下一步到终点的最小跳跃次数 int steps = minJumpsRecursive(arr, nextPos);if (steps != Integer.MAX_VALUE) {minSteps = Math.min(minSteps, 1 + steps); // 当前跳跃+后续步数 }}return minSteps;}public static int minJumps(int[] arr) {int result = minJumpsRecursive(arr, 0);return result == Integer.MAX_VALUE ? -1 : result;}public static void main(String[] args) {int[] arr = {1, 3, 5, 8, 9, 2, 6, 7, 6, 8, 9};System.out.println(minJumps(arr)); // 输出:3}
}
      1. 方法 2:动态规划(时间复杂度 O(n²),空间复杂度 O(n))

核心思想:自底向上填充 dp[i],表示从 i 到终点的最小跳跃次数。

public class JumpGameDP {public static int minJumps(int[] arr) {int n = arr.length;int[] dp = new int[n];Arrays.fill(dp, Integer.MAX_VALUE);dp[n - 1] = 0; // 终点到终点的跳跃次数为0  // 从倒数第二个元素向前推导  for (int i = n - 2; i >= 0; i--) {// 最多可跳跃到的最远位置  int maxJump = Math.min(i + arr[i], n - 1);for (int j = i + 1; j <= maxJump; j++) {if (dp[j] != Integer.MAX_VALUE) {dp[i] = Math.min(dp[i], 1 + dp[j]); // 选择最小的跳跃次数  }}}return dp[0] == Integer.MAX_VALUE ? -1 : dp[0];}public static void main(String[] args) {int[] arr = {1, 3, 5, 1, 3, 2, 6, 7, 6, 8, 9};        System.out.println(minJumps(arr)); // 输出:4int[] arr1 = {1, 3, 5, 8, 9, 2, 6, 7, 6, 8, 9};System.out.println(minJumps(arr1)); // 输出:3}
}

说明

  • 初始化dp[n-1] = 0(终点无需跳跃)。
  • 填表顺序:从后向前,每个位置依赖后续位置的结果。
  • 优势:无需递归栈,空间更优。

方法对比

方法

时间复杂度

空间复杂度

核心优化

暴力递归

O(nⁿ)

O(n)

动态规划(自底向上)

O(n²)

O(n)

迭代填表,无需递归栈

http://www.dtcms.com/wzjs/175352.html

相关文章:

  • 上海网站建设觉策动力网站推广经验
  • 自己做的网站在浏览器上显示不安全深圳百度关键词
  • 商务网站规划与建设企业网站建设多少钱
  • 怎么登陆建设u盾网站搜索引擎推广方式
  • 网站说服力 营销型网站策划郑州seo网站关键词优化
  • 重庆响应式网站方案电脑培训速成班多少钱
  • 网站不备案支付宝接口北京百度搜索排名优化
  • 门户网站建设方案模板百度网站优化软件
  • 商城网站 个人备案营销推广的主要方式
  • 2万块建一个网站贵吗sem是什么意思
  • wordpress如何绑定多个域名seo建站优化
  • ipad做电影网站seo排名关键词点击
  • wordpress作者关注功能怎么实现什么是seo技术
  • 婚纱网网站建设目的及功能定位搜狗seo排名软件
  • 团结湖网站建设网络营销的现状
  • 第三方做公司网站免费二级域名分发网站源码
  • 南宁网站建设超博网络网站建设公司排名
  • 最新被百度收录的网站百度一下你就知道官网网址
  • 淘宝上做网站 源代码怎么给你win优化大师有用吗
  • 望牛墩东莞网站建设百度如何免费推广
  • 重庆哪里可以做网站永州网站seo
  • 网站开发 哪个工具更快大数据查询个人信息
  • 用laravel做的网站如何创建个人网站免费
  • 线上平面设计培训班网站seo优化方案项目策划书
  • 大连网站设计九首选仟亿科技营销策划经典案例
  • 网站百度收录秒收方法网站优化推广费用
  • 如何用七牛云做视频网站百度收录好的免费网站
  • 网站建设费用申请ip域名查询网
  • 日本做爰漫画网站百度收录网站入口
  • 买了阿里云怎么做网站柳州网站建设