[Leetcode][程序员面试金典][面试题16.11][JAVA][跳水板][数学][动态规划]

【问题描述】[简单]

在这里插入图片描述

【解答思路】

边界问题

  1. k=0 ,不能产生跳水板,返回空数组
  2. shorter 等于longer,只有一种跳水板,返回longerk
    思路
    一般情况,k块木板,k种可能
    跳水板的长度是 shorter
    (k-j)+longer*j,其中 0 ≤ i < j ≤ k,且为升序排列
1. 数学

时间复杂度:O(N^2) 空间复杂度:O(1)

 public int[] divingBoard(int shorter, int longer, int k) {if(k==0){return new int[]{};}if(shorter==longer){return new int[1]{shorter*k};}int[] ans = new int[k+1];for(int i = 0 ;i<=k;i++){ans[i] = (k-i) *shorter + i*longer;}return ans;}
2. 动态规划

动态规划流程
第 1 步:设计状态
lengths[i] 为第 i 条跳水板的长度
第 2 步:状态转移方程
int distance = longer - shorter;
lengths[i] = lengths[i-1] + distance;
第 3 步:考虑初始化
lengths[0] = shorter * k;
第 4 步:考虑输出
return lengths;

时间复杂度:O(N) 空间复杂度:O(1)

public int[] divingBoard(int shorter, int longer, int k) {if (k == 0) {return new int[0];}if (shorter == longer) {return new int[]{shorter * k};}int distance = longer - shorter;int[] lengths = new int[k + 1];lengths[0] = shorter * k;for(int i = 1; i <= k; i++) {lengths[i] = lengths[i-1] + distance;}return lengths;}

【总结】

1.数组的使用分声明和初始化两部分,两者可同时进行,也可分开进行int[] array; 声明

int[] array = new int{element1,element2,element3…}; 初始化方式1

int[] array = new int[length]; 初始化方式2

数组的初始化方式分为两种:

一.静态初始化:初始化时由程序员显式指定每个数组元素的初始值;

int[] arrayName = new int[]{element1,element2,element3…}

二.动态初始化:初始化时由程序员指定数组的长度,由系统初始化每个数组元素的默认值。

int[] arrayName = new int[length];

注意:不要同时使用静态初始化和动态初始化,也就是说,不要在进行数组初始化时,既指定数组的长度,也为每个数组元素分配初始值。

2.能用简单数学推导的就用数学 本题的动态规划也是基于数学推导
3.动态规划流程

第 1 步:设计状态
第 2 步:状态转移方程
第 3 步:考虑初始化
第 4 步:考虑输出
第 5 步:考虑是否可以状态压缩

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

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

相关文章

54include对象

建立一个test11对象 <% page language"java" import"java.util.*" contentType"text/html; charsetUTF-8"pageEncoding"UTF-8"%> <!DOCTYPE html> <html> <head> <meta charset"ISO-8859-1">…

[Objective-C语言教程]动态绑定(32)

动态绑定确定在运行时而不是在编译时调用的方法。 动态绑定也称为后期绑定。 在Objective-C中&#xff0c;所有方法都在运行时动态解析。执行的确切代码由方法名称(选择器)和接收对象确定。 动态绑定可实现多态性。例如&#xff0c;考虑一组对象&#xff0c;包括Rectangle和Squ…

55exception对象

定义exception.jsp <% page language"java" import"java.util.*" contentType"text/html; charsetUTF-8"pageEncoding"UTF-8" errorPage"File.jsp" %> <!DOCTYPE html> <html> <head> <meta c…

pta - 1132 Cut Integer

判断这个偶数长度的数平分长度后再乘起来能否被原数整除 #include<iostream> #include<cstdio> #include<cstring> #include<cmath> #include<algorithm> using namespace std; typedef long long ll; int main() {int t;ll n;ios::sync_with_s…

[小错误][JAVA][数组初始化]数组静态初始化和动态初始化不能混用

错误 return new int[1]{shorter*k};error: array creation with both dimension expression and initialization is illegal return new int[1]{shorter*k}; 数组静态初始化和动态初始化混用 解决办法 数组的使用分声明和初始化两部分&#xff0c;两者可同时进行&#xff0c…

pat-1057 Stack 树状数组+二分查找

题意 给我们一个n表示操作数量 然后三种操作 push和pop 还有求中位数的操作 让我们根据操作输出正确的解 分析 用sort排序做 或者 map标记法都会超时 考虑更快的方法 如何快速找到给定一串数的中位数 可以去索引 但是需要排序 题目中告诉我们每个元素都小于1e5 那么也…

[剑指offer]面试题第[43]题[Leetcode][第233题][JAVA][1~n整数中1出现的次数][找规律][递归]

【问题描述】[困难] 【解答思路】 1. 暴力 &#xff08;超时&#xff09; 逐个数统计’1’的数量 时间复杂度&#xff1a;O(N^2) 空间复杂度&#xff1a;O(1) public int countDigitOne(int n) {int count 0;for(int i1;i<n;i){int tmp i;while(tmp>0){if(tmp%101){c…

56jsp登录案例

链接&#xff1a;https://pan.baidu.com/s/1W4UYInbsm17V9_2rFLNGFg 提取码&#xff1a;c5g5 复制这段内容后打开百度网盘手机App&#xff0c;操作更方便哦 login.jsp <% page language"java" import"java.util.*" contentType"text/html; chars…

matplotlib的颜色和控制条

为了方便记忆&#xff0c;收藏备用 一 linestyle - solid line style -- dashed line style -. dash-dot line style : dotted line style 二marker style . point marker , pixel marker o circle marker v triangle_down mark…

[Leetcode][程序员面试金典][面试题17.13][JAVA][恢复空格][动态规划][Trie][字符串哈希]

【问题描述】[中等] 【解答思路】 1. 动态规划 动态规划流程 第 1 步&#xff1a;设计状态 dp[i] 表示字符串的前 i 个字符的最少未匹配数。 第 2 步&#xff1a;状态转移方程 假设当前我们已经考虑完了前 i -1个字符了&#xff0c;对于前 i 个字符对应的最少未匹配数&#…

三序遍历相互求法

给中序前序求后序遍历 根据前序和中序求后序遍历序列 根据前序和中序的特性分析 1 首先从前序序列确定当前子树的根节点 2 然后可以根据根节点到中序序列中找到左右子树的个数 分析左右子树 3 如果左右子树数量大于零 相当于我们分别知道了左右子树在前序和中序的子序列 4 通…

cp link

在linux中复制link文件时&#xff0c;如果想复制link的目标文件而不是link的话&#xff0c;可以用cp -L转载于:https://www.cnblogs.com/lybinger/p/10572515.html

[Leetcode][第1392题][JAVA][最快乐前缀][KMP][字符串编码]

【问题描述】[困难] 【解答思路】 1. Rabin-Karp 字符串编码&#xff08;详见总结&#xff09; 关于为什么哈希值计算乘数为31&#xff0c;说法是&#xff0c;首先31是质数&#xff0c;其次编译器会将31*i 优化为 (i<<5)-i 时间复杂度&#xff1a;O(N^2) 空间复杂度&…

平面图转对偶图19_03_21校内训练 [Everfeel]

对于每个平面图&#xff0c;都有唯一一个对偶图与之对应。若G‘是平面图G的对偶图&#xff0c;则满足&#xff1a; G中每一条边的两个节点对应着G中有公共边的面&#xff0c;包括最外部无限大的面。 直观地讲&#xff0c;红色标出来的图就是蓝色标出的图的对偶图。 求出一个平面…

pat 1085 Perfect Sequence (25) 二分查找

题意 给我们一个数串 让我们从中挑选数字 构成一个集合 使得集合中最小元素m和最大元素M 满足 m*p>M 求出集合的最大数量 分析 看下条件就可以发现 m*p >M 也就是在数串中找m*p>x x的上界 那么排下序二分找即可 code #include<bits/stdc.h> using nam…

58如何调出eclipse左边文件栏

如何让windows的左侧显示 点击windows --show view--project explore 像eclipse底部的一些信息展示不见了&#xff0c;比如代码输出结果展示的 console 等都可以通过 ShowView 找到并显示出来哦&#xff0c;如果没有就去 Window -> ShowView -> other去找吧

[JAVA][算法] [字符串匹配]KMP

我们为什么需要KMP&#xff1f; 在字符串匹配问题中&#xff0c;我们需要找到匹配串pattern在原串text中的位置&#xff0c;一种显而易见的思路就是暴力匹配&#xff0c;如图所示&#xff0c;我们把pattern放置到text中的每个位置进行比较即可。 但是大家可以发现&#xff0c;…

微信小程序入门与实战

第1章 什么是微信小程序&#xff1f; 介绍小程序的特点与适用场景、对开发者的影响以及课程特色&#xff01;七月老师小程序进阶课《纯正商业应用——微信小程序实战》与《微信小程序商城构建全栈应用》已上线&#xff0c;全面进阶小程序&#xff01; 1-1 序&#xff1a;十几个…

pat-1136. A Delayed Palindrome (20) 模拟

本可以java大数就能搞定的问题 当时用java写完答案明明对了提交总是答案错误 很是无语 题意 任给我们一个数 让我们对这个数进行翻转相加 如果加和是个回文数 就找到了程序出口 如果不是继续迭代 输出过程 如果迭代10次没有找到就输出特定信息 分析 就是模拟高精度加…