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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

962-最大宽度坡

發布時間:2023/12/6 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 962-最大宽度坡 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

前言

Weekly Contest 116 的最大寬度坡:

給定一個整數數組 A,坡是元組 (i, j),其中 i < j 且 A[i] <= A[j]。這樣的坡的寬度為 j - i。

找出 A 中的坡的最大寬度,如果不存在,返回 0 。

示例1:

輸入:[6,0,8,2,1,5] 輸出:4 解釋: 最大寬度的坡為 (i, j) = (1, 5): A[1] = 0 且 A[5] = 5.

示例2:

輸入:[9,8,1,0,1,9,4,0,4,1] 輸出:7 解釋: 最大寬度的坡為 (i, j) = (2, 9): A[2] = 1 且 A[9] = 1.

提示:

  • 2 <= A.length <= 50000
  • 0 <= A[i] <= 50000
  • 解題思路

    本題中的元組個人感覺是一個煙霧彈,就算不了解元組的概念也能夠完成本題。本題的邏輯雖然不復雜,但是如果只是按照邏輯實現,會出現Time Limit Exceeded的情況,需要在實現的代碼上進行算法的優化,減少循環次數從而避免 Time Limit Exceeded。

    本題的邏輯實現其實很簡單,使用雙指針法即可完成。
    首先第一個指針有序的遍歷每個元素,當第一個指針指向一個元素時,第二個指針則遍歷這個元素后的每一個元素,并依次與第一個指針指向的元素進行比較,如果值比它小,則計算坡度并與當前最大坡度進行比較,記錄較大值。

    實現代碼

    邏輯實現

    這個代碼是根據題意實現的基礎代碼,會出現Time Limit Exceeded的情況

    public int maxWidthRamp(int[] A) {//最大寬度int maxWidth=0;for(int i=0;i<A.length-1;i++){for(int j=i+1;j<A.length;j++){if(A[i]<=A[j]){//比較兩個指針指向的元素值,滿足A[i] <= A[j]則計算寬度maxWidth=maxWidth>=(j-i)?maxWidth:j-i;//計算最大寬度}}}return maxWidth;}

    算法優化

    /*** 962. 最大寬度坡* @param A* @return*/public int maxWidthRamp(int[] A) {//最大寬度int maxWidth=0;//理論最大寬度int mayMaxWidth=0;for(int i=0;i<A.length-1;i++){//每次循環時,理論最大寬度應該不會超過數組最后一個元素的索引減去當前元素索引mayMaxWidth=A.length-1-i;if(maxWidth>=mayMaxWidth){//超過理論最大值表示已經找到最大寬度坡,直接終止循環break;}for(int j=i+1;j<A.length;j++){if(A[i]<=A[j]){//比較兩個指針指向的元素值,滿足A[i] <= A[j]則計算寬度maxWidth=maxWidth>=(j-i)?maxWidth:j-i;//計算最大寬度}}}return maxWidth;}

    總結

    以上是生活随笔為你收集整理的962-最大宽度坡的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。