
算法
文章平均质量分 51
GOV_D
知道的愈多,愈发现自己的无知
展开
-
【蓄水池抽样】算法入门
【蓄水池抽样】算法知识点学习自宫水三叶大佬,记录一下。方法一:哈希表如果不考虑数组的大小,我们可以在构造函数中,用一个哈希表 map 记录 nums 中相同元素的下标。对于pick 操作,我们可以从 map 中取出target 对应的下标列表,然后随机选择其中一个下标并返回。class Solution { Map<Integer, List<Integer>> map; Random random; public Solution(int[] n原创 2022-04-25 20:30:37 · 657 阅读 · 0 评论 -
字典序排数相关算法
记录两道与数字的字典序排数相关的题目(字节常考)把数字的字典序画出来看看马上就明白了。class Solution { public List<Integer> lexicalOrder(int n) { List<Integer> ans = new ArrayList<>(); int cur = 1; for(int i = 0; i < n; i++) { ans.add原创 2022-04-18 19:40:22 · 463 阅读 · 0 评论 -
数状数组模板(板子该记还得记)
树状数组模板// 上来先把三个方法写出来{ int[] tree; int lowbit(int x) { return x & -x; } // 查询前缀和的方法 int query(int x) { int ans = 0; for (int i = x; i > 0; i -= lowbit(i)) ans += tree[i]; return ans; } /..原创 2022-04-04 15:44:48 · 145 阅读 · 0 评论 -
拓扑排序算法入门
class Solution { public int[] findOrder(int numCourses, int[][] prerequisites) { //记录每个点的邻接表,视题目变化可改用map或list HashSet<Integer>[] adj =new HashSet[numCourses]; for(int i=0;i<numCourses;i++){ adj[i]=new HashS.原创 2022-04-04 15:40:51 · 571 阅读 · 0 评论 -
【图论搜索】----------多源 BFS
单源BFS通常我们使用 BFS 求最短路,都是针对如下场景:从特定的起点出发,求解到达特定终点的最短距离。多源BFS与「单源最短路」不同,「多源最短路」问题是求从「多个源点」到达「一个/多个汇点」的最短路径。在实现上,最核心的搜索部分,「多源 BFS」与「单源 BFS」并无区别。多源BFS应用题(leetcode):1162.地图分析994.腐烂的橘子542.01矩阵1765.地图中的最高点这几道都是多源BFS的板子题或稍稍改变一些应用举例:题目要求让矩阵中的最高高度最大,我们可原创 2022-01-29 14:04:16 · 1164 阅读 · 0 评论 -
通用进制转化算法------将一个n进制的数转化为m进制
任意进制转换和经典的十进制转化为二进制类似,十进制转化为二进制,每次对2取模,然后除以2,直至为0。所以任意进制的转换同理去写即可举例:给定一个整数num,十进制转化为十六进制,每次对16取模,然后除以16,直至为0。需要额外注意负数的情况,根据补码的规则,最高位为符号位,即如果是负数,第32位为1,反之00。计算机中的运算机制为补码运算,正数的补码为其本身,对于负数,我们加上2^32(相当于按位取反末位加一),将其转移到正数范围内处理,注意int数据范围不够,需要用 long。需要注意的是要对原创 2021-10-02 11:08:49 · 1837 阅读 · 0 评论 -
常用数学运算算法----求两个数的最大公约数|求两个数的最小公倍数|快速幂|判断一个数是否为质数|判断一个数二进制的位1个数
求两个数的最大公约数long gcd(long a, long b) { if (a < b) return gcd(b, a); if (a % b == 0) return b; return gcd(b, a%b); }简化:long gcd(long a, long b){ return b == 0 ? a : gcd(b, a % b); }求两个数的最小公倍数先求出最大公约数,然后两数相乘除以原创 2021-09-19 17:28:38 · 194 阅读 · 0 评论 -
快速排序算法【从双路快排到三路快排】
快排的基本思想是:1.先从数列中取出一个数作为基准数。2.分区过程,将比这个数大的数全放到它的右边,小于或等于它的数全放到它的左边。3.再对左右区间重复第二步,直到各区间只有一个数。void quickSort(int* seq, int low, int high) {//快速排序算法,用于电梯扫描算法中 if (low < high) { int i = low, j = high; int temp = seq[i]; while (i < j) { while原创 2021-09-03 11:22:28 · 388 阅读 · 0 评论 -
二叉搜索树登场
前言:最近作了不少关于二叉搜索树的题目,发现很多题目都通过利用二叉搜索树的性质解决,套路都相差无几,这里做个总结。二叉搜索树的性质若它的左子树不为空,则其左子树上的所有结点的值均小于它根节点的值若它的右子树不为空,则其右子树上的所有结点的值均大于它根节点的值它的左,右子树也分别为二叉搜索树二叉搜索树的中序遍历是从小到大的有序数列前三点是二叉搜索树类题目解题的必然性质,最后一点是解题用的常用思路。解决二叉树类题目的两种方法:一.递归确定传入参数和返回值确定终止条件确定要使用何种遍历原创 2021-04-24 10:04:19 · 101 阅读 · 0 评论 -
Trie Tree (前缀树)的实现和基本应用
介绍 Trie????Trie 是一颗非典型的多叉树模型,多叉好理解,即每个结点的分支数量可能为多个。为什么说非典型呢?因为它和一般的多叉树不一样,尤其在结点的数据结构设计上,比如一般的多叉树的结点是这样的:class TreeNode { int value; //结点值 TreeNode children[NUM]; //指向孩子结点};而 Trie 的结点是这样的(假设只包含’a’~'z’中的字符):class TrieNode { boolean原创 2021-04-17 09:36:54 · 126 阅读 · 0 评论 -
Java Comparator接口和compareto方法总结
compare(Object o1,Object o2)方法是java.util.Comparator接口的方法,它实际上用的是待比较对象的compareTo(Object o)方法。之前一直搞不清楚自定义的compare的返回值到底怎么处理,一番查询和总结后得到如下结果:compare(Object o1,Object o2)方法中,默认采用的是o1-o2,若o1<o2,返回值为-1;若o1==o2,返回值为0;若o1>o2,返回值为1;而其排序结果是按-1来排序的,即默认为从小到大排序。原创 2021-03-28 09:29:53 · 1842 阅读 · 1 评论 -
二分法----一看就会,一写就废
文章目录一、二分法是什么?二、二分法在什么情况下使用三、实际应用一、二分法是什么?二分法通常又叫二分查找,一般用于查找一个有序数组中的某个值的位置或者给定的特定值的插入位置;相比把整个数组遍历一次的O(n)复杂度,二分查找可以把复杂度降低到O(logn);二分查找的基础概念在这里就不再赘述,本文主要记录二分法的基本情况使用和采用二分思路来求解的一些问题。二、二分法在什么情况下使用二分法一定是建立在元素有序的前提下的;所以看到题目中出现有序数组等词时,并且要求我们查找某个值或者给一个值求插入位置原创 2021-04-10 12:23:40 · 22845 阅读 · 4 评论 -
“双栈”解决表达式求值问题
表达式求值问题是什么?就是给定一个字符串给你要求求出结果,如“1+3*2-3”,结果为4.我们来看以下几个题目。1.基本计算器2.基本计算器Ⅱ我们可以发现其实这都是表达式求值问题,只不过题目的表达式形式不一,是只有+,-;还是+,-,*,\,^都有;甚至包括(),还有的可能有自定义计算。那么对这类表达式求值问题有没有一个统一的方法求值呢?是有滴!掌握了这个方法之后无论是啥表达式求值都莫得问题了撒。//以下方法总结自力扣一位大佬双栈解决「通用表达式」问题的通用解法对于「表达式计算」这一类原创 2021-04-03 09:20:02 · 793 阅读 · 0 评论 -
根据哈夫曼树构建哈夫曼编码
实验题:构造哈夫曼树生成哈夫曼编码编写一个程序,构造一棵哈夫曼树,输出对应的哈夫曼编码和平均查找长度,并对下表(所示的数据进行验证。单词及出现的频度单词: The of a to and in that he is at on for His are be频度 :1192 677 541 518 462 450 242 195 190 181 174 157 138 124 123#include <iostream>#define N 50#define M 2*N-1usin原创 2021-02-26 14:27:21 · 5416 阅读 · 2 评论