Java中的binarySearch,TreeNode,Deque,HashSet,TreeSet的小注意事項

Arrays.binarySearch();的用法。
如果沒有找到,則返回 (-(插入點) - 1),即沒找到的話就返回【將該值插入到數組後,該值的索引爲x】,返回的是(-x-1)。

TreeNode node,在使用node = node.next時,node會變成下一個節點的地址,爲了獲得node 最開始的頭結點,則在開始對node遍歷之前,TreeNode head = node,記錄下node的頭位置,且在遍歷或賦值時,要使用node.next = xxx;node = node.next;【切記不要使用 node = node.next; node = xxx; 這樣一來沒有 node.next = xxx;這句話則只能起到對TreeNode的遍歷e.next時,node會變成下一個節點的地址,爲了獲得node 最開始的頭結點,則在開始對node遍歷之前,TreeNode head = node,記錄下node的頭位置,且在遍歷或賦值時,要使用node.next = xxx;node = node.next;【切記不要使用 node = node.next; node = xxx; 這樣一來沒有 node.next = xxx;這句話則只能起到對TreeNode的遍歷取值和賦值作用!!!注意:沒有起到next的連接TreeNode的作用,即所有的 TreeNode 各 節點 都是獨立的 !!!!這樣一來對ndoe 的頭結點的記錄將只是一個單一的節點。】

Deque<int[]> queue= new ArrayDeque<int[]>();諸如int[],int[][],是可以直接放入ArrayDeque,TreeMap,ArrayList等數據結構中的,ArrayDeque的offer:插入末尾,
peek:獲取頭部,,poll:獲取並移除頭部,這三種方法可以避免數據溢出而報錯。
pop 和 push 是彈出和壓入。

dfs的關鍵在於遞歸函數內部調用遞歸函數後,使變量的狀態回到這一層調用前的狀態。
bfs的關鍵在於根據Empty判斷的逐層消除與放入,與遍歷過數據的標記。

int[] c;
c = ch.clone(); 可將數組的數據進行快速克隆,沒有地址的共同指向。

array = new Integer[list.size()];
list.toArray(array);
可以實現List到數組的快速導入。
Arrays.asList(array);與上述過程相反

Arrays.sort(strs,new Comparator() {
@Override
public int compare(String s1, String s2) {
// TODO Auto-generated method stub
return s1.length()-s2.length();
}
});
可以對第一個參數Collection,進行自定義的排序規則。

HashSet或1速2速指針同時走,對判斷是否是循環鏈表TreeNode很有幫助。

Set<int[]> set = new TreeSet<int[]>(new Comparator<int[]>() {
@Override
public int compare(int[] o1, int[] o2) {
// TODO Auto-generated method stub
return new Integer(o1[0]+o1[1]).compareTo(o2[0]+o2[1]);
}
});
Tree繫有序數據結構的定義,或是在其內部自定義的類實現Comparator也可以。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章