算法数据结构笔记
算法与数据结构
源码参考:https://github.com/algorithmzuo/algorithmbasic2020
观看课程:哔哩哔哩左程云算法课
新手小白1640
这个作者很懒,什么都没留下…
展开
-
二叉树的递归套路
二叉树的递归套路可以解决绝大多数的二叉树问题尤其是树形dp问题,本质是利用递归遍历二叉树的便利性问题一:给定一颗二叉树的头结点head,返回这颗二叉树是不是平衡二叉树满足条件:①左树是平衡的;②右树是平衡的;③左树与右树的高度差不超过1;package tree;public class IsBalanced { public static class Node{ public int value; public Node left; public Node righ原创 2022-03-22 21:38:06 · 337 阅读 · 0 评论 -
二叉树:用递归的方式打印纸条折痕
请把一张纸条竖着放在桌子上,然后从纸条的下边向上方对折1次,压出折痕后展开。此时折痕是凹下去的,即折痕突起的方向指向纸条的背面。如果从纸条的下边向上方连续对折2次,压出折痕后展开,此时有三条折痕,从上到下依次是下折痕、下折痕和上折痕。给定一个输入参数N,代表纸条都从下边向上方连续对折N次,请从上到下打印所有折痕的方向。package tree;public class PaperFolding { public static void printAllFolds(int N) {.原创 2022-03-22 15:04:13 · 869 阅读 · 0 评论 -
非递归方式实现二叉树的先序遍历、后续遍历
先序遍历:弹出就打印;如有右孩子压入右孩子;如有左孩子,压入左孩子public static void pre(Node head) { System.out.print("pre-ord"); if(head!=null) { Stack<Node> stack=new Stack<Node>(); stack.add(head); while(!stack.isEmpty()) { head=stack.pop(); System.原创 2022-03-22 13:24:46 · 781 阅读 · 0 评论 -
排序总结(排序算法稳定性、如何选择排序算法以及排序算法常见的坑)
一、稳定性处理相等数时的态度,可以决定算法的稳定性时间复杂度为O(N^2) 空间复杂度O(1)的排序:选择排序:无稳定性冒泡排序:有稳定性插入排序:有稳定性时间复杂度为O(N*logN)的排序:归并排序:有稳定性(空间复杂度:O(N))随机快排:无稳定性(空间复杂度:O(logN))堆排序:无稳定性(空间复杂度:O(1))时间复杂度为O(N)的排序:...原创 2022-03-20 21:19:48 · 898 阅读 · 0 评论 -
三种快速排序递归法(java)
快速排序1.0public static void quickSort1(int[] arr) { if (arr == null || arr.length < 2) { return; } process1(arr,0,arr.length-1); } public static void process1(int[] arr, int L, int R) { if (L >= R) { return; } int M=原创 2022-03-19 15:39:34 · 921 阅读 · 0 评论 -
用归并排序求数组小和(java)
在一个数组中,一个数左边比它小的数的总和,叫数的小和,所有数的小和累加起来叫数组的小和,求数组小和public class SmallSum { //递归 public static int smallSum(int[] arr) { if(arr==null||arr.length<2) { return 0; } return process(arr,0,arr.length-1); } public static int process(int[]原创 2022-03-19 10:52:55 · 502 阅读 · 0 评论 -
二分法、利用二分法找有序数组中的num(有对数器测试)
package class02_erfen;import java.util.Arrays;//二分法public class BSExist { //arr保证有序 public static boolean find(int[] arr,int num) { if(arr==null||arr.length==0) { return false; } int L=0; int R=arr.length-1; while(L<=R) { int m.原创 2022-03-18 15:10:27 · 320 阅读 · 0 评论 -
选择排序、冒泡排序、插入排序以及插入排序的优化(java)
选择排序:在0~n-1中找到最小的放在0位;在1~n-1中找到最小的放在1位……以此类推冒泡排序:假如有n个数在0~n-1中:0位置和1位置比较,谁大谁往后1位置和2位置比较谁大谁往后...原创 2022-03-05 19:07:43 · 509 阅读 · 0 评论