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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

领扣 LeetCode 42:接雨水(java)(网易有道面试真题)

發布時間:2025/3/19 编程问答 19 豆豆
生活随笔 收集整理的這篇文章主要介紹了 领扣 LeetCode 42:接雨水(java)(网易有道面试真题) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

題目:鏈接

給定?n?個非負整數表示每個寬度為 1 的柱子的高度圖,計算按此排列的柱子,下雨之后能接多少雨水。

上面是由數組 [0,1,0,2,1,0,1,3,2,1,2,1] 表示的高度圖,在這種情況下,可以接 6 個單位的雨水(藍色部分表示雨水)。?感謝 Marcos?貢獻此圖。

示例:

輸入: [0,1,0,2,1,0,1,3,2,1,2,1] 輸出: 6

解題思路:

第一步:遍歷整個數組,找到整個數組中最高的柱子,做好記錄

第二步:從左向右遍歷到那個最高柱子,找到并對左邊的最大值做好記錄,一旦有柱子比這個最大值低,那么這個位置可以裝水

第三步:從右向左遍歷到那個最高柱子,找到并對右邊的最大值做好記錄,一旦有柱子比這個最大值低,那么這個位置可以裝水

代碼:

class Solution {public int trap(int[] height) {int max = 0;int maxIndex = 0;for(int i =0 ;i< height.length; i++){if (max < height[i]){max = height[i];maxIndex = i;}}int sum = 0;int maxLeft = 0;int maxRight = 0;for (int a=0 ; a<maxIndex; a++){if (height[a]>=maxLeft){maxLeft = height[a];}else{sum+= maxLeft-height[a];}}for (int b=height.length-1 ; b>maxIndex; b--){if (height[b]>=maxRight){maxRight = height[b];}else{sum+= maxRight-height[b];}}System.out.print(sum);return sum;} }

手動測試

public class Solution {public int trap(int[] height) {int max = 0;int maxIndex = 0;for(int i =0 ;i< height.length; i++){if (max < height[i]){max = height[i];maxIndex = i;}}int sum = 0;int maxLeft = 0;int maxRight = 0;for (int a=0 ; a<maxIndex; a++){if (height[a]>=maxLeft){maxLeft = height[a];}else{sum+= maxLeft-height[a];}}for (int b=height.length-1 ; b>maxIndex; b--){if (height[b]>=maxRight){maxRight = height[b];}else{sum+= maxRight-height[b];}}System.out.print(sum);//6return sum;}public static void main(String[] args){int[] height={0,1,0,2,1,0,1,3,2,1,2,1};Solution solution = new Solution();solution.trap(height);} }

結果:

總結

以上是生活随笔為你收集整理的领扣 LeetCode 42:接雨水(java)(网易有道面试真题)的全部內容,希望文章能夠幫你解決所遇到的問題。

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