二叉树:种类:满二叉树、完全二叉树、二叉搜索树、平衡二叉搜索树存储方式:链式存储、线式存储(顺序存储)二叉数遍历:深度优先搜索(前序、中序、后序):使用递归实现(实际用栈来实现)、迭代法(非递归的方式、栈),广度优先搜索(层序遍历):用队列递归三步走写法:1、确定递归函数的参数和返回值。2、确定终止条件。3、确定单层递归的逻辑。144、二叉树的前序遍历/***Definitionforabinarytreenode.*publicclassTreeNode{*intval;*TreeNodeleft;*TreeNoderight;*TreeNode(){}*TreeNode(intval){t
二叉树:种类:满二叉树、完全二叉树、二叉搜索树、平衡二叉搜索树存储方式:链式存储、线式存储(顺序存储)二叉数遍历:深度优先搜索(前序、中序、后序):使用递归实现(实际用栈来实现)、迭代法(非递归的方式、栈),广度优先搜索(层序遍历):用队列递归三步走写法:1、确定递归函数的参数和返回值。2、确定终止条件。3、确定单层递归的逻辑。144、二叉树的前序遍历/***Definitionforabinarytreenode.*publicclassTreeNode{*intval;*TreeNodeleft;*TreeNoderight;*TreeNode(){}*TreeNode(intval){t
回溯算法回溯的本质是穷举,所以不是高效的算法回溯法,一般可以解决如下几种问题:组合问题:N个数里面按一定规则找出k个数的集合注意区分一个集合取组合和多个集合取组合的细节。切割问题:一个字符串按一定规则有几种切割方式子集问题:一个N个数的集合里有多少符合条件的子集排列问题:N个数按一定规则全排列,有几种排列方式棋盘问题:N皇后,解数独等等需要注意问题是有一个解还是多个解,一个解的需要返回值,一旦找到解就逐级返回,多个解的不需要返回值因为回溯算法需要的参数可不像二叉树递归的时候那么容易一次性确定下来,所以一般是先写逻辑,然后需要什么参数,就填什么参数。从图中看出for循环可以理解是横向遍历,bac
回溯算法回溯的本质是穷举,所以不是高效的算法回溯法,一般可以解决如下几种问题:组合问题:N个数里面按一定规则找出k个数的集合注意区分一个集合取组合和多个集合取组合的细节。切割问题:一个字符串按一定规则有几种切割方式子集问题:一个N个数的集合里有多少符合条件的子集排列问题:N个数按一定规则全排列,有几种排列方式棋盘问题:N皇后,解数独等等需要注意问题是有一个解还是多个解,一个解的需要返回值,一旦找到解就逐级返回,多个解的不需要返回值因为回溯算法需要的参数可不像二叉树递归的时候那么容易一次性确定下来,所以一般是先写逻辑,然后需要什么参数,就填什么参数。从图中看出for循环可以理解是横向遍历,bac
贪心算法刷题或者面试的时候,手动模拟一下感觉可以局部最优推出整体最优,而且想不到反例,那么就试一试贪心。455、分发饼干classSolution{publicintcount;publicintfindContentChildren(int[]g,int[]s){Arrays.sort(g);Arrays.sort(s);count=0;intindexS=0;intindexG=0;while(indexS=g[indexG]){count++;indexG++;indexS++;}else{indexS++;}}returncount;}}376、摆动序列classSolution{pu
贪心算法刷题或者面试的时候,手动模拟一下感觉可以局部最优推出整体最优,而且想不到反例,那么就试一试贪心。455、分发饼干classSolution{publicintcount;publicintfindContentChildren(int[]g,int[]s){Arrays.sort(g);Arrays.sort(s);count=0;intindexS=0;intindexG=0;while(indexS=g[indexG]){count++;indexG++;indexS++;}else{indexS++;}}returncount;}}376、摆动序列classSolution{pu
动态规划如果某一问题有很多重叠子问题,使用动态规划是最有效的解题步骤:背包问题:01背包,完全背包,多重背包01背包:统一使用一维数组来进行遍历publicstaticvoidmain(String[]args){int[]weight={1,3,4};int[]value={15,20,30};intbagWight=4;testWeightBagProblem(weight,value,bagWight);}publicstaticvoidtestWeightBagProblem(int[]weight,int[]value,intbagWeight){intwLen=weight.len
动态规划如果某一问题有很多重叠子问题,使用动态规划是最有效的解题步骤:背包问题:01背包,完全背包,多重背包01背包:统一使用一维数组来进行遍历publicstaticvoidmain(String[]args){int[]weight={1,3,4};int[]value={15,20,30};intbagWight=4;testWeightBagProblem(weight,value,bagWight);}publicstaticvoidtestWeightBagProblem(int[]weight,int[]value,intbagWeight){intwLen=weight.len
洛谷oj题单【入门1】顺序结构-入门难度(Java)来源:https://www.luogu.com.cn/training/100#problemsB2002Hello,World!publicclassMain{publicstaticvoidmain(String[]args){System.out.println("Hello,World!");}}B2025输出字符菱形publicclassMain{publicstaticvoidmain(String[]args){System.out.println("*");System.out.println("***");System.o
洛谷oj题单【入门1】顺序结构-入门难度(Java)来源:https://www.luogu.com.cn/training/100#problemsB2002Hello,World!publicclassMain{publicstaticvoidmain(String[]args){System.out.println("Hello,World!");}}B2025输出字符菱形publicclassMain{publicstaticvoidmain(String[]args){System.out.println("*");System.out.println("***");System.o