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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

常考数据结构与算法:容器盛水问题

發(fā)布時間:2025/6/15 编程问答 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 常考数据结构与算法:容器盛水问题 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

題目描述

給定一個整形數(shù)組arr,已知其中所有的值都是非負的,將這個數(shù)組看作一個容器,請返回容器能裝多少水。

示例

輸入

[3,1,2,5,2,4]

返回值

5

?

思路

能裝多少水是由左右兩邊較低的邊決定的,因此采用雙指針,從開頭和最后向中間靠攏,當位置i的數(shù)小于較低邊表示可以裝水。當位置i的數(shù)大于較低邊時,更新較低邊為位置i的值。

public class MaxWaterStruct {public static void main(String[] args) {int[] arr = {3,1,2,5,2,4};MaxWaterStruct maxWaterStruct = new MaxWaterStruct();long l = maxWaterStruct.maxWater(arr);System.out.println(l);}public long maxWater (int[] arr) {// write code hereif(arr.length < 1){return 0;}int i = 0; // 左指針int j = arr.length - 1; // 右指針int maxLeft = arr[i]; //桶左邊的長度int maxRight = arr[j]; // 桶右邊的長度long ret = 0L; // 盛水總量while(i < j){// 較低邊為左邊if(maxLeft < maxRight){i++;// 當前位置i小于大于較低邊,更新較低邊的值,小于裝水if(arr[i] > maxLeft){maxLeft = arr[i];}else{ret += maxLeft - arr[i];}}else{// 較低邊為右邊j--;// 當前位置i小于大于較低邊,更新較低邊的值,小于裝水if(arr[j] > maxRight){maxRight = arr[j];}else{ret += maxRight - arr[j];}}}return ret;} }

?

《新程序員》:云原生和全面數(shù)字化實踐50位技術(shù)專家共同創(chuàng)作,文字、視頻、音頻交互閱讀

總結(jié)

以上是生活随笔為你收集整理的常考数据结构与算法:容器盛水问题的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

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