Algorithm
還是先做easy的找找感覺
- N-ary Tree Level Order Traversal
遍歷N叉樹并按層級輸出。
這題比較簡單,可以用隊列。
/*
// Definition for a Node.
class Node {
public int val;
public List<Node> children;
public Node() {}
public Node(int _val,List<Node> _children) {
val = _val;
children = _children;
}
};
*/
class Solution {
public List<List<Integer>> levelOrder(Node root) {
List<List<Integer>> res = new ArrayList<List<Integer>>();
if (root == null) {
return res;
}
Queue<Node> queue = new LinkedList<Node>();
queue.offer(root);
queue.offer(null);
List<Integer> list = new ArrayList<Integer>();
while (queue.size() > 0) {
Node node = queue.poll();
if (node == null) {
res.add(list);
if (queue.size() > 0) {
list = new ArrayList<Integer>();
queue.offer(null);
}
}
if (node != null) {
list.add(node.val);
if (node.children != null && node.children.size() > 0) {
queue.addAll(node.children);
}
}
}
return res;
}
}
Review
https://www.javaworld.com/article/3268983/java-challengers-1-method-overloading-in-the-jvm.html
小結(jié):
在JVM處理重載時,有三個重要的編譯技術(shù):Widening; Boxing; Varargs
Widening
示例:
int primitiveIntNumber = 5;
double primitiveDoubleNumber = primitiveIntNumber ;
較低等級的類型會自動擴展為較高等級的類型

基礎(chǔ)類型擴展
Boxing
基礎(chǔ)類型可以box為包裝類型;包裝類型也可以unbox為基礎(chǔ)類型
int primitiveIntNumber = 7;
Integer wrapperIntegerNumber = primitiveIntNumber;
Integer wrapperIntegerNumber = Integer.valueOf(primitiveIntNumber);
Varargs
利用...來表示多個傳入?yún)?shù),在無法獲知具體傳入?yún)?shù)個數(shù)時可以使用
注意
- int基礎(chǔ)類型無法autobox為Double而只能autobox為double
- Integer Long Float Double這些無法相互擴展
- 硬編碼時,JVM會自動將1編譯為int,將1.0編譯為double??梢杂?F來表示float,1D來表示double,增加可讀性
- Double類型更容易被包裝為Object,而不是被unbox為double
- JVM執(zhí)行順序:Widening----->Boxing----->Varargs
Tip
- 如何在idea中搜尋文件---雙擊shift
- 挑選出表table中userId計數(shù)大于1的所有內(nèi)容
Select * From table Where userId In (Select userId From table Group By userId Having Count(*)>1)