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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

[leedcode][JAVA][365][BFS]

發布時間:2023/12/10 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 [leedcode][JAVA][365][BFS] 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

【問題描述】

有兩個容量分別為 x升 和 y升 的水壺以及無限多的水。請判斷能否通過使用這兩個水壺,從而可以得到恰好 z升 的水?如果可以,最后請用以上水壺中的一或兩個來盛放取得的 z升 水。你允許:裝滿任意一個水壺 清空任意一個水壺 從一個水壺向另外一個水壺倒水,直到裝滿或者倒空 示例 1: (From the famous "Die Hard" example)輸入: x = 3, y = 5, z = 4 輸出: True 示例 2:輸入: x = 2, y = 6, z = 5 輸出: False

【解答思路】

1. 廣度優先遍歷BFS
  • set 確保情況不重復
  • queue 遍歷所有情況
public boolean canMeasureWater_BFS(int x, int y, int z) {if (z < 0 || z > x + y) {return false;}Set<Integer> set = new HashSet<>();Queue<Integer> q = new LinkedList<>(); //巧妙過度q.offer(0); //遍歷所有情況 第一次 x,y入隊列while (!q.isEmpty()) {int n = q.poll(); //巧妙限制條件!if (n + x <= x + y && set.add(n + x)) {q.offer(n + x);}if (n + y <= x + y && set.add(n + y)) {q.offer(n + y);}if (n - x >= 0 && set.add(n - x)) {q.offer(n - x);}if (n - y >= 0 && set.add(n - y)) {q.offer(n - y);}if (set.contains(z)) {return true;}}return false; }
2.數學方法 最大公約數
public boolean canMeasureWater(int x, int y, int z) {if (z == 0) return true;if (x + y < z) return false;int big = Math.max(x, y);int small = x + y - big;if (small == 0) return big == z;//最大公約數 while (big % small != 0) {int temp = small;small = big % small;big = temp;}return z % small == 0; }

【總結】

1. 想清楚所有可能,列小點實現,善用容器,巧用邊界
2. Queue操作
  • add 增加一個元索 如果隊列已滿,則拋出一個IIIegaISlabEepeplian異常
  • remove 移除并返回隊列頭部的元素 如果隊列為空,則拋出一個NoSuchElementException異常
  • element 返回隊列頭部的元素 如果隊列為空,則拋出一個NoSuchElementException異常
  • offer 添加一個元素并返回true 如果隊列已滿,則返回false
  • poll 移除并返問隊列頭部的元素 如果隊列為空,則返回null
  • peek 返回隊列頭部的元素 如果隊列為空,則返回null
  • put 添加一個元素 如果隊列滿,則阻塞
  • take 移除并返回隊列頭部的元素
3.Collections

Set 和List 都繼承了Conllection,Map沒有
Collection接口的方法

  • boolean add(Object o) :向集合中加入一個對象的引用
  • void clear() :刪除集合中所有的對象,即不再持有這些對象的引用
  • boolean isEmpty() :判斷集合是否為空
  • boolean contains(Object o): 判斷集合中是否持有特定對象的引用
  • Iterartor iterator() : 返回一個Iterator對象,可以用來遍歷集合中的元素
  • boolean remove(Object o):從集合中刪除一個對象的引用
  • int size() :返回集合中元素的數目
  • Object[] toArray() :返回一個數組,該數組中包括集合中的所有元素
  • 關于:Iterator() 和toArray() 方法都用于集合的所有的元素,前者返回一個Iterator對象,后者返回一個包含集合中所有元素的數組。
    Iterator接口聲明了如下方法:
  • hasNext(): 判斷集合中元素是否遍歷完畢,如果沒有,就返回true
  • next() :返回下一個元素
  • remove():從集合中刪除上一個有next()方法返回的元素。
    Set 的 add()方法是如何判斷對象是否已經存放在集合中?
boolean isExists=false;Iterator iterator=set.iterator();while(it.hasNext()) {String oldStr=it.next();if(newStr.equals(oldStr)){isExists=true;}

總結

以上是生活随笔為你收集整理的[leedcode][JAVA][365][BFS]的全部內容,希望文章能夠幫你解決所遇到的問題。

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

主站蜘蛛池模板: 黄色www视频| 国产91精品欧美 | 亚洲av激情无码专区在线播放 | h片在线观看 | 国产日本欧美在线 | 日本伦理片在线播放 | 国产精品久久欧美久久一区 | 两性免费视频 | 用舌头去添高潮无码视频 | 国产一区二区三区精品愉拍 | 日本国产在线视频 | 国产黑丝在线观看 | 国产精品视频在线播放 | 又骚又黄的视频 | 久久一区二区视频 | 色综合久久天天综合网 | 久久亚洲精品中文字幕 | 变态另类ts人妖一区二区 | 国产黑丝视频 | 欧美日韩一区二区电影 | 欧美精品在线一区二区 | 国产成人亚洲精品无码h在线 | 成人黄色一区二区 | www.啪啪.com | 免费观看已满十八岁 | 8x8ⅹ国产精品一区二区 | 自拍偷拍视频在线观看 | 成人午夜淫片免费观看 | 激情五月婷婷 | 免费国产一区二区三区 | 美女久久久久久久久 | 久久xx| 小明看国产 | 亚州色图欧美色图| 国产一区二区不卡在线 | 成人黄色一级视频 | www.亚洲天堂 | 国产电影一区二区三区爱妃记 | 五月天黄色小说 | 琪琪秋霞午夜被窝电影网 | 国产成人亚洲综合a∨婷婷 台湾a级片 | 91精品人妻一区二区 | 午夜精品久久久久久久蜜桃 | 波多野结衣电车 | 精品一区二区三区在线视频 | 香蕉视频免费网站 | 色 综合 欧美 亚洲 国产 | 精品乱子伦一区二区 | 日本一区二区三区在线视频 | 黄色一级带| 最新av网址在线观看 | 色婷婷亚洲一区二区三区 | 欧美成人aaaaa| 九九在线免费视频 | 中国第一毛片 | 中文字幕久久一区 | 精品人妻人人做人人爽夜夜爽 | 日本动漫艳母 | 激情啪啪网站 | 三级国产三级在线 | 少妇真人直播免费视频 | 国产女主播福利 | 日本久久高清视频 | 成年人免费视频播放 | 日本www黄| 天天干视频 | 国产欧美日韩三区 | 亚洲福利国产 | 精品二区在线 | 影音先锋欧美资源 | 国产中文字幕一区 | 国产视频一区二区三区四区 | 欧美成人秋霞久久aa片 | 97在线视频免费观看 | 91久久综合精品国产丝袜蜜芽 | 日韩人妻无码精品久久久不卡 | 夜夜伊人 | 狠狠撸在线视频 | 国产精品久久久久久久久动漫 | 国产做受91 | 亚洲天堂一级 | 亚洲黄色免费观看 | 国产专区一区二区三区 | 亚洲在线日韩 | 日韩中文字幕网 | 欧美乱妇日本无乱码特黄大片 | 成人网站在线进入爽爽爽 | 国产婷婷一区二区三区久久 | 午夜网站在线观看 | 久久超碰精品 | 国产日韩在线观看一区 | 国产精品果冻传媒潘 | 日韩一区免费观看 | 日韩毛片一区 | 闺蜜张开腿让我爽了一夜 | 国模人体一区二区 | 国产一级一片免费播放放a 丁香六月色 | 亚洲成人三区 | 欧美另类性 |