思路:
因為要求在O(1)完成,所以考察HashMap或者HashSet苍在。但是hashset只存value情龄,沒法getRandom,所以用HashMap
刪除的時候癣丧,先判斷那個數(shù)是不是list最后一個槽畔,如果是的話,直接刪除胁编;如果不是厢钧,為了保持連續(xù)性鳞尔,把最后一個數(shù)和要刪除的數(shù)調(diào)換位置,再刪掉最后一個數(shù)早直,同時map中也要更新寥假,把要刪除的位置的數(shù)重新賦予最后一個數(shù)。
getrandom?生成一個隨機(jī)數(shù)霞扬,通過map中存的value找到
知識點(diǎn):
Random生成隨機(jī)數(shù) Random m = new Random()
int nextInt() 該方法的作用是生成一個隨機(jī)的int值糕韧,該值介于int的區(qū)間,也就是-231到231-1之間喻圃。