class Solution { public List<List<Integer>> levelOrder(TreeNode root) { List<List<Integer>> result = new ArrayList<>(); if(root==null){ return result; } Queue<TreeNode> queue = new LinkedList<>(); queue.add(root); while (!queue.isEmpty()){ List<Integer> list = new ArrayList<>(); int size = queue.size(); for(int i=0;i<size;i++){ TreeNode node = queue.poll(); list.add(node.val); if(node.left!=null){ queue.add(node.left); } if(node.right!=null){ queue.add(node.right); } } result.add(list); } return result; }}
class Solution { public int maxProfit(int[] prices) { if(prices==null || prices.length==0){ return 0; } // 第i天股票状态为j时的最大利润:j=0表示不持有股票,j=1表示持有股票 int[][] dp = new int[prices.length][2]; // 不持有股票 dp[0][0] = 0; // 持有股票 dp[0][1] = -prices[0]; for(int i=1;i<prices.length;i++){ // 不持有股票:上一天就不持有股票,上一天持有股票今天卖出 dp[i][0] = Math.max(dp[i-1][0],dp[i-1][1]+prices[i]); // 持有股票:上一天就持有股票,上一天不持有股票今天买入(只能一次买入一次卖出,因此不是dp[i-1][0]-prices[i]) dp[i][1] = Math.max(dp[i-1][1],-prices[i]); } return dp[prices.length-1][0]; }}