[leedcode][JAVA][365][BFS]
生活随笔
收集整理的這篇文章主要介紹了
[leedcode][JAVA][365][BFS]
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
【問(wèn)題描述】
有兩個(gè)容量分別為 x升 和 y升 的水壺以及無(wú)限多的水。請(qǐng)判斷能否通過(guò)使用這兩個(gè)水壺,從而可以得到恰好 z升 的水?如果可以,最后請(qǐng)用以上水壺中的一或兩個(gè)來(lái)盛放取得的 z升 水。你允許:裝滿(mǎn)任意一個(gè)水壺 清空任意一個(gè)水壺 從一個(gè)水壺向另外一個(gè)水壺倒水,直到裝滿(mǎn)或者倒空 示例 1: (From the famous "Die Hard" example)輸入: x = 3, y = 5, z = 4 輸出: True 示例 2:輸入: x = 2, y = 6, z = 5 輸出: False【解答思路】
1. 廣度優(yōu)先遍歷BFS
- set 確保情況不重復(fù)
- queue 遍歷所有情況
2.數(shù)學(xué)方法 最大公約數(shù)
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;//最大公約數(shù) while (big % small != 0) {int temp = small;small = big % small;big = temp;}return z % small == 0; }【總結(jié)】
1. 想清楚所有可能,列小點(diǎn)實(shí)現(xiàn),善用容器,巧用邊界
2. Queue操作
- add 增加一個(gè)元索 如果隊(duì)列已滿(mǎn),則拋出一個(gè)IIIegaISlabEepeplian異常
- remove 移除并返回隊(duì)列頭部的元素 如果隊(duì)列為空,則拋出一個(gè)NoSuchElementException異常
- element 返回隊(duì)列頭部的元素 如果隊(duì)列為空,則拋出一個(gè)NoSuchElementException異常
- offer 添加一個(gè)元素并返回true 如果隊(duì)列已滿(mǎn),則返回false
- poll 移除并返問(wèn)隊(duì)列頭部的元素 如果隊(duì)列為空,則返回null
- peek 返回隊(duì)列頭部的元素 如果隊(duì)列為空,則返回null
- put 添加一個(gè)元素 如果隊(duì)列滿(mǎn),則阻塞
- take 移除并返回隊(duì)列頭部的元素
3.Collections
Set 和List 都繼承了Conllection,Map沒(méi)有
Collection接口的方法:
- boolean add(Object o) :向集合中加入一個(gè)對(duì)象的引用
- void clear() :刪除集合中所有的對(duì)象,即不再持有這些對(duì)象的引用
- boolean isEmpty() :判斷集合是否為空
- boolean contains(Object o): 判斷集合中是否持有特定對(duì)象的引用
- Iterartor iterator() : 返回一個(gè)Iterator對(duì)象,可以用來(lái)遍歷集合中的元素
- boolean remove(Object o):從集合中刪除一個(gè)對(duì)象的引用
- int size() :返回集合中元素的數(shù)目
- Object[] toArray() :返回一個(gè)數(shù)組,該數(shù)組中包括集合中的所有元素
- 關(guān)于:Iterator() 和toArray() 方法都用于集合的所有的元素,前者返回一個(gè)Iterator對(duì)象,后者返回一個(gè)包含集合中所有元素的數(shù)組。
Iterator接口聲明了如下方法: - hasNext(): 判斷集合中元素是否遍歷完畢,如果沒(méi)有,就返回true
- next() :返回下一個(gè)元素
- remove():從集合中刪除上一個(gè)有next()方法返回的元素。
Set 的 add()方法是如何判斷對(duì)象是否已經(jīng)存放在集合中?
總結(jié)
以上是生活随笔為你收集整理的[leedcode][JAVA][365][BFS]的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 电子邮件收发这样实现!!!
- 下一篇: twitter集成第三方登录是窗口一直出