Java中的for循环
for循环的执行过程
声明条件变量 i ,且只执行一次
表达式判断
执行循环体
最后执行 i++ 或 ++i
利用声明变量条件只会执行一次的特性可以解决一个问题:https://leetcode-cn.com/problems/cong-shang-dao-xia-da-yin-er-cha-shu-ii-lcof/
从上到下按层打印二叉树,同一层的节点按从左到右的顺序打印,每一层打印到一行:
public List<List<Integer>> levelOrder1(TreeNode root) { Queue<TreeNode> queue = new LinkedList<>(); List<List<Integer>> res = new ArrayList<>(); if(root != null) queue.add(root); while(!queue.isEmpty()) { List<Integer> tmp = new ArrayList<>(); for(int i = queue.size(); i > 0; i--) { TreeNode node = queue.poll(); tmp.add(node.val); if(node.left != null) queue.add(node.left); if(node.right != null) queue.add(node.right); } res.add(tmp); } return res; }
在上述代码for循环中,由于queue的大小是在变化的,故将其放在声明条件变量的文位置,即确定执行循环的次数,不会因为queue大小的改变,而改变循环的次数。
for循环中的continue 和 break
当遇到continue时,不会执行continue后面的代码,但是最后会执行 i++ 或 ++i
当遇到break时,会直接跳出循环,不会执行 i++ 或 ++i