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也可以。

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