日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

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

發(fā)布時間:2023/12/10 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 [Leetcode][程序员面试金典][面试题16.11][JAVA][跳水板][数学][动态规划] 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

【問題描述】[簡單]

【解答思路】

邊界問題

  • k=0 ,不能產(chǎn)生跳水板,返回空數(shù)組
  • shorter 等于longer,只有一種跳水板,返回longerk
    思路
    一般情況,k塊木板,k種可能
    跳水板的長度是 shorter(k-j)+longer*j,其中 0 ≤ i < j ≤ k,且為升序排列
  • 1. 數(shù)學(xué)

    時間復(fù)雜度:O(N^2) 空間復(fù)雜度: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. 動態(tài)規(guī)劃

    動態(tài)規(guī)劃流程
    第 1 步:設(shè)計狀態(tài)
    lengths[i] 為第 i 條跳水板的長度
    第 2 步:狀態(tài)轉(zhuǎn)移方程
    int distance = longer - shorter;
    lengths[i] = lengths[i-1] + distance;
    第 3 步:考慮初始化
    lengths[0] = shorter * k;
    第 4 步:考慮輸出
    return lengths;

    時間復(fù)雜度:O(N) 空間復(fù)雜度: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;}

    【總結(jié)】

    1.數(shù)組的使用分聲明和初始化兩部分,兩者可同時進行,也可分開進行int[] array; 聲明

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

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

    數(shù)組的初始化方式分為兩種:

    一.靜態(tài)初始化:初始化時由程序員顯式指定每個數(shù)組元素的初始值;

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

    二.動態(tài)初始化:初始化時由程序員指定數(shù)組的長度,由系統(tǒng)初始化每個數(shù)組元素的默認值。

    int[] arrayName = new int[length];

    注意:不要同時使用靜態(tài)初始化和動態(tài)初始化,也就是說,不要在進行數(shù)組初始化時,既指定數(shù)組的長度,也為每個數(shù)組元素分配初始值。

    2.能用簡單數(shù)學(xué)推導(dǎo)的就用數(shù)學(xué) 本題的動態(tài)規(guī)劃也是基于數(shù)學(xué)推導(dǎo)
    3.動態(tài)規(guī)劃流程

    第 1 步:設(shè)計狀態(tài)
    第 2 步:狀態(tài)轉(zhuǎn)移方程
    第 3 步:考慮初始化
    第 4 步:考慮輸出
    第 5 步:考慮是否可以狀態(tài)壓縮

    總結(jié)

    以上是生活随笔為你收集整理的[Leetcode][程序员面试金典][面试题16.11][JAVA][跳水板][数学][动态规划]的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。