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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

LeetCode 11盛水最多的容器12整数转罗马数字

發布時間:2025/3/20 编程问答 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 LeetCode 11盛水最多的容器12整数转罗马数字 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

目錄

    • 盛水最多的容器
      • 題目描述
      • 分析
    • 整數轉羅馬數字
      • 題目描述:
      • 分析
    • 結語

盛水最多的容器

公眾號:bigsai,回復進群加入打卡,回復bigsai獲取3GB的pdf資源。點贊再看,養成習慣!

題目描述

給你 n 個非負整數 a1,a2,…,an,每個數代表坐標中的一個點 (i, ai) 。在坐標內畫 n 條垂直線,垂直線 i 的兩個端點分別為 (i, ai) 和 (i, 0)。找出其中的兩條線,使得它們與 x 軸共同構成的容器可以容納最多的水。

說明:你不能傾斜容器,且 n 的值至少為 2。


示例:

輸入:[1,8,6,2,5,4,8,3,7]
輸出:49

分析

對于這題來說,要求是求能夠組成容器最大面積(忽略寬度)。直白的講就是從若干個數字中找到一對數字,它們的距離和較小的數字成績最大

越好的情況就是數字很大(高度很高),并且距離也足夠長!但是也很可能出現最大的在中間的情況:

思路一:
這題可以使用暴力的方法求解,枚舉所有可能的情況,我們知道每個容器需要兩根柱子組成,我們每次遍歷柱子讓當前柱子成為最矮的,去找最長的那個計算結果。當然這個結果可能是左側,也可能是右側。所以要找到遠的那個比當前數字大的結果與max進行比較即可。


在具體的實現方面,注意一下相鄰距離為1就可以啦:

public int maxArea(int[] height) {int max = 0;for (int i = 0; i < height.length; i++) {int left = 0, right = 0;for (int j = i; j >= 0; j--) {if (height[i] <= height[j]) {left = j;}}for (int j = i; j < height.length; j++) {if (height[i] <= height[j]) {right = j;}}max = Math.max(max, Math.max((i - left) * height[i], (right - i) * height[i]));}return max;}

不過效果很差……

這種方法就是沒任何進步的方法。

思路二:
這題其實可以從兩側雙指針動態試探,初始情況沒什么疑問,但是下一次到底是左面指針向右移動還是右側指針向左移動呢?你要清楚:

  • 無論左移還是右移動,數字之間的區間都是減小的(距離縮小)
  • 如果移動較大的那個,下一次移動結果一定不可能大于這一次結果!(就算你的下一個很高,但是要根據最矮的來)
  • 所以我們每次移動,把較小的那個指針向中間移動,尋找更大的可能

你可能會擔心,這樣看從一個位置元素來看確實滿足,會不會你這樣漏了更好的,當然不會,我說了當前情況是這個矮個子能夠到達的最大情況,已經是一個極限,想要突破這個極限,就只能去找更高的組合。

實現代碼為(具體可以看我另一篇優化的思路):

public int maxArea(int[] height) {int max = 0;int left = 0;int right = height.length - 1;int team = 0;int len = height.length;int leftvalue=0;int rightvalue=0;while (len-- > 0) {leftvalue=height[left];rightvalue=height[right];if (leftvalue < rightvalue) {team = leftvalue * len;if(max<team) {max=team;}left++;} else {team = rightvalue * len;if(max<team) {max=team;}right--;}}return max;}

效果良好:

整數轉羅馬數字

題目描述:

羅馬數字包含以下七種字符: I, V, X, L,C,D 和 M。

例如, 羅馬數字 2 寫做 II ,即為兩個并列的 1。12 寫做 XII ,即為 X + II 。 27 寫做 XXVII, 即為 XX + V + II 。

通常情況下,羅馬數字中小的數字在大的數字的右邊。但也存在特例,例如 4 不寫做 IIII,而是 IV。數字 1 在數字 5 的左邊,所表示的數等于大數 5 減小數 1 得到的數值 4 。同樣地,數字 9 表示為 IX。這個特殊的規則只適用于以下六種情況:

  • I 可以放在 V (5) 和 X (10) 的左邊,來表示 4 和 9。
  • X 可以放在 L (50) 和 C (100) 的左邊,來表示 40 和 90。
  • C 可以放在 D (500) 和 M (1000) 的左邊,來表示 400 和 900。

給定一個整數,將其轉為羅馬數字。輸入確保在 1 到 3999 的范圍內。

分析

對于這題,其實就是一個數字和字符串處理的問題。規則和進制準換很相似 ,思路也大體一致——不斷整除和求余,只不過要考慮5和10的兩種特殊情況:

  • 對于5種類來說除數的結果一定是4并且當前滿足為偶數位(0,2,4等位)(比如處理4時候4/1=4,40/10=4)
  • 對于10種類來說除數的結果為1,且加上比它小一位的數和為比它大一位的數(比如9/5=1,9+1=10),且都在奇數位上。

有了上述方法找到對應位置的數就可以進行操作了,記住疊加羅馬數字一定別用String而要用StringBuilder

實現代碼為:

public static String intToRoman(int num) {int numvalue []={1,5,10,50,100,500,1000};char charvalue []= {'I', 'V', 'X', 'L','C','D','M'};StringBuilder sBuilder=new StringBuilder();int team=0;for(int i=numvalue.length-1;i>=0;i--){team=num/numvalue[i];if(team==4&&i%2==0) {//向上進一為sBuilder.append(charvalue[i]); sBuilder.append(charvalue[i+1]); num=num%numvalue[i];}else if (team==1&&i%2==1&&(num+numvalue[i-1])/numvalue[i+1]==1) {sBuilder.append(charvalue[i-1]);sBuilder.append(charvalue[i+1]);num%=numvalue[i-1];}else {for(int j=0;j<team;j++){sBuilder.append(charvalue[i]);}num=num%numvalue[i];}}return sBuilder.toString(); }

效果還不錯!

結語

原創不易,bigsai我請你幫兩件事幫忙一下:

  • star支持一下, 您的肯定是我在平臺創作的源源動力。

  • 微信搜索「bigsai」,關注我的公眾號,不僅免費送你電子書,我還會第一時間在公眾號分享知識技術。加我還可拉你進力扣打卡群一起打卡LeetCode。

  • 記得關注、咱們下次再見!

    總結

    以上是生活随笔為你收集整理的LeetCode 11盛水最多的容器12整数转罗马数字的全部內容,希望文章能夠幫你解決所遇到的問題。

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

    主站蜘蛛池模板: 夜夜夜夜爽 | 中文字幕在线观看第一页 | 天天人人| 日本视频免费在线播放 | 大乳巨大乳j奶hd | 亚洲日本视频在线观看 | 国产精选久久 | 少妇太紧太爽又黄又硬又爽小说 | 黄色免费入口 | 青青草久久伊人 | 精品国产乱码一区二区三 | 国产另类ts人妖一区二区 | 日韩免费高清视频 | 色老头在线一区二区三区 | 精品国产欧美一区二区三区成人 | 久久国产一二三 | 亚洲一级二级 | 国产精品久久久久久久免费 | 四虎影视www在线播放 | 欧美做爰性生交视频 | 美女网站黄页 | 国产精品久久91 | 免费观看av | 欧美乱妇狂野欧美视频 | 麻豆导航 | 麻豆精品视频在线观看 | 久久盗摄 | 日韩一区二区三区不卡视频 | 91精品国产色综合久久不卡粉嫩 | 日韩大片免费观看视频播放 | 久久情趣视频 | 爱爱网站视频 | 久操这里只有精品 | 美国色视频 | 国产精品久久久久久亚洲伦 | 在线国产观看 | 肉色超薄丝袜脚交一区二区图片 | 欧美wwwxxxx | 日韩欧美123| 久热国产视频 | 日韩免费视频一区 | 欧美精品电影一区二区 | 在线免费黄色片 | 国产精品视频一区二区在线观看 | 国产综合社区 | 干爹你真棒插曲mv在线观看 | 人妻夜夜爽天天爽 | 久久久久久久综合 | 中文字幕人妻熟女人妻a片 麻豆91视频 | aaa级黄色片 | 亚洲色图av在线 | 九九九在线 | 锕锕锕锕锕锕锕锕 | 伊人网在线视频 | 国产免费一区二区三区在线播放 | 护士的小嫩嫩好紧好爽 | 美女网站在线免费观看 | 男人天堂va | 午夜小福利 | 色偷偷在线观看 | 免费福利影院 | 91嫩草欧美久久久九九九 | 婷婷九九| 国产福利视频在线 | 91香蕉黄 | 亚洲综合在线一区二区 | 欧美18一19性内谢 | 少妇1~3伦理 | 黄色片免费在线观看 | 日韩精品啪啪 | 欧美图片一区 | av优选在线观看 | 国产无遮挡免费观看视频网站 | 99精品偷自拍 | 亚洲男人第一av | 午夜亚洲一区 | 风韵少妇spa私密视频 | 欧美在线一区二区三区四区 | 一本大道综合伊人精品热热 | 加勒比在线免费视频 | 97播播 | av噜噜在线| 能看av的网站 | 99久久精品免费看国产四区 | 午夜性色福利视频 | 欧美操女人 | 精品在线播放 | 摸丰满大乳奶水www免费 | 天天躁夜夜操 | 四季av国产一区二区三区 | 自拍超碰在线 | 奶水喷溅 在线播放 | 日本特级黄色片 | 欧美人与动性xxxxx杂性 | 美女高潮流白浆视频 | avtt国产| av观看国产 | wwwxxx欧美| 麻豆短视频在线观看 |