算法
文章平均质量分 61
算法整理
CaptainHzc
记录学习
展开
-
数据结构2
数据结构与算法1.什么是算法?2.TreeMap和TreeSet在排序时如何比较元素?Collections工具类中的sort()方法如何比较元素?3.如何知道二叉树的深度?4.介绍一下,堆排序的原理是什么?5.数组和链表的区别6.二分查找了解过吗?7.说下你熟悉的排序算法8.布隆过滤器了解过吗?9.一致性hash算法了解过吗?10.如何在一个1到100的整数数组中找到丢失的数字?11.请你讲讲LRU算法的实现原理?12.为什么要设计后缀表达式,有什么好处?13. 什么是B树?原创 2021-08-04 16:52:13 · 473 阅读 · 0 评论 -
二叉树算法
题目:分别按照二叉树先序,中序和后序打印所有的节点。牛客网:分别按照二叉树先序,中序和后序打印所有的节点。import java.util.*;/* * public class TreeNode { * int val = 0; * TreeNode left = null; * TreeNode right = null; * } */public class Solution { /** * * @param root TreeNode原创 2021-08-04 16:50:01 · 233 阅读 · 0 评论 -
10大排序算法
1.常见排序算法复杂度2.冒泡排序步骤:比较相邻的元素。如果第一个比第二个大,就交换他们两个。对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。这步做完后,最后的元素会是最大的数。针对所有的元素重复以上的步骤,除了最后一个。重复步骤1~3,直到排序完成。最快 :正序最慢:逆序public int[] sort(int[] arr){ for (int i = 1; i < arr.length; i++) { // 设定一个标记原创 2021-06-25 16:49:32 · 220 阅读 · 0 评论 -
堆排序问题
NC随时找到数据流的中位数思路:1、准备一个大根堆,一个小根堆2、一个新进来的数,如果比大根堆堆顶大,进小根堆;比大根堆堆顶小,进大根堆3、如果两个堆长度差2,弹出堆顶进对面堆4、最后中位数必在两个堆顶中//创建小根堆 PriorityQueue <Integer> minHeap = new PriorityQueue<>(); //创建大根堆 PriorityQueue<Integer> maxHeap = new PriorityQueue<原创 2021-06-20 20:15:04 · 106 阅读 · 0 评论 -
逆波兰式计算器实现
1、中缀表达式转为后缀表达式将中缀表达式“9+(3-1)×3+10÷2”转化为后缀表达式 "9 3 1 - 3 * + 10 2 /+"的过程:2、解题思路逆波兰计算器的计算是在逆波兰表达式(也叫做后缀表达式)的基础上。 逆波兰计算器的计算过程为:从左到右扫描后缀表达式,遇到数字就入栈,遇到操作符就从栈弹出两个数字,然后计算得到的值继续入栈,继续扫描表达式,直到扫描完毕得到结果。 从逆波兰计算器的扫描过程可以看到,过程特别简单,代码写起来也比较容易。但现在的难点在于:如何把中缀表达式转成后缀原创 2021-06-17 17:55:00 · 581 阅读 · 0 评论 -
java中的位运算
1)左移( << )将5左移2位:5<<2 ,结果是20首先会将5转为2进制表示形式(java中,整数默认就是int类型,也就是32位):0000 0000 0000 0000 0000 0000 0000 0101 然后左移2位后,低位补0:0000 0000 0000 0000 0000 0000 0001 0100 换算成10进制为205 * 2^22)右移( >> )将5左移2位:5>>2 ,结果是原创 2021-06-08 09:53:37 · 666 阅读 · 0 评论 -
回溯算法
输入一个字符串,打印出该字符串中字符的所有排列。你可以以任意顺序返回这个字符串数组,但里面不能有重复元素。原创 2021-05-07 17:43:27 · 113 阅读 · 0 评论 -
贪心算法
贪心算法的基本要素:1.贪心选择性质。所谓贪心选择性质是指所求问题的整体最优解可以通过一系列局部最优的选择,即贪心选择来达到。这是贪心算法可行的第一个基本要素,也是贪心算法与动态规划算法的主要区别。动态规划算法通常以自底向上的方式解各子问题,而贪心算法则通常以自顶向下的方式进行,以迭代的方式作出相继的贪心选择,每作一次贪心选择就将所求问题简化为规模更小的子问题。对于一个具体问题,要确定它是否具有贪心选择性质,必须证明每一步所作的贪心选择最终导致问题的整体最优解。2. 当一个问题的最优解包含其子问题.原创 2021-05-07 17:42:23 · 129 阅读 · 0 评论 -
DFS和BFS相关算法
题目:752. 打开转盘锁1.分析出是个N叉数的问题2.广度优先搜索求最短路径3.BFS 非递归写法的level 计数class Solution { public int openLock(String[] deadends, String target) { Set<String> set = new HashSet<>(Arrays.asList(deadends)); Set<String> visited = ne原创 2021-05-07 17:41:52 · 107 阅读 · 0 评论 -
链表相关
86. 分隔链表1.四指针分两个子链表2.子链表合并时注意尾指针指向空,否则会构成环class Solution { public ListNode partition(ListNode head, int x) { ListNode bighead = new ListNode(0); ListNode smallhead = new ListNode(0); ListNode bigtail = bighead; ListNo原创 2021-05-07 17:41:07 · 102 阅读 · 0 评论 -
栈相关
227. 基本计算器 II1.在字符串中提取整数方法2.加减乘除的判断(无括号)3.单栈class Solution { public int calculate(String s) { Stack<Integer> stack = new Stack<>(); char sign = '+'; for(int i=0;i<s.length();++i){ if (s.charAt(i) =原创 2021-05-07 17:40:16 · 79 阅读 · 0 评论 -
动态规划
在一个由’0’和’1’组成的二维矩阵内,找到只包含’1’的最大正方形,并返回其面积。题目地址: 221.最大正方形相似题目: 1277. 统计全为 1 的正方形子矩阵class Solution { public int maximalSquare(char[][] matrix) { int maxSide = 0; if (matrix == null || matrix.length == 0 || matrix[0].length == 0) { .原创 2021-05-07 17:39:29 · 67 阅读 · 0 评论