電面
- 自我介紹
- 項(xiàng)目和實(shí)習(xí)內(nèi)容
- 一個(gè)txt文檔中有100個(gè)手機(jī)號(hào)揭措,有可能會(huì)有重復(fù)的膨处,如何用最快的方法找出重復(fù)的?
建立一顆樹抑党,建立的過程為:
1)開始的時(shí)候樹是空的润绎。
2)逐個(gè)讀取手機(jī)行亩歹,比如讀入一個(gè)手機(jī)號(hào)為:12345678900,在樹中插入這個(gè)手機(jī)號(hào)后凡橱,樹為:
root
└─1
└─2
└─3
└─4
└─5
└─6
└─7
└─8
└─9
└─0
└─0
3)插入若干手機(jī)號(hào)后,樹可能是這樣的:
root
└─1
├─2
│ └─3
│ └─4
│ └─5
│ └─6
│ ├─6
│ │ └─8
│ │ └─9
│ │ └─0
│ │ ├─0
│ │ └─1
│ └─7
│ └─8
│ └─9
│ └─0
│ ├─0
│ └─1
├─5
│ └─3
│ └─4
│ └─5
│ └─6
│ └─7
│ └─8
│ └─9
│ └─0
│ └─0
└─7
└─3
└─4
└─5
└─6
└─7
└─8
└─9
這顆數(shù)一共有 6 個(gè)手機(jī)號(hào)亭姥,分別是:
12345668900
12345668901
12345678900
12345678901
15345678900
17345678900
4)判斷一個(gè)手機(jī)號(hào)是不是重復(fù)的稼钩,只要在這顆樹里面,逐層逐個(gè)數(shù)字查找就可以了达罗。
5)效率分析:這種算法坝撑,插入一個(gè)新的手機(jī)號(hào)静秆,以及查找一個(gè)手機(jī)號(hào)是否重復(fù),效率都是很高的巡李。
一個(gè)個(gè)以字符串形式取出存入如一個(gè)Set<String>集合和一個(gè)List集合all抚笔,因?yàn)镾et集合不允許重復(fù)所以在把Set轉(zhuǎn)成List other,然后all.removeAll(other);剩下的就是重復(fù)的侨拦。比樹要麻煩殊橙。
- Java 0-9生成不重復(fù)五位數(shù)字驗(yàn)證碼