
算法
文章平均质量分 62
bluedraam_pp
不是有希望才坚持,是坚持才有希望
展开
-
延时重试的方法
在许多场景下,需要通过重试几次来取到正确的值,例如 ,在通过接口申请维表数据的时候,有可能接口设置限流,所以需要重试多次来获取正确的数据。这种重试如何实现呢?原创 2025-03-21 10:35:03 · 108 阅读 · 0 评论 -
递归的一个应用
有的部门在二级,有的在三级上,如果使用常规的 sql 自关联的方法,不能适应情况的发展,如果,在第四级或者第六级上面新增部门。那就需要修改 sql 了。三个关键字段,有一家公司,他们的部门分为四级。现需要取出任意部门下所有没有下级部门的部门。以下面的组织架构为例,原创 2024-07-16 10:02:46 · 198 阅读 · 0 评论 -
再说连续性问题
连续问题是判断在某个期间,某些动作(状态)是否连续出现。在帖子连续性问题中, 已经提到了用户连续登录、最大假期等。这些问题的解法是使用大小等差数列相减的办法。其实还有一种算法可以解决此问题,它就是合并集办法。合并集往往使用在计算二维数组的连通性问题,例如,leetcode 的 friend-circle 和 island-size 两个问题。并查集能解决二维数组的问题,那么一维数组的问题一定也能完美解决,在之前文章中提到的连续性问题就是一维数组上的连通性问题。原创 2024-04-26 11:30:42 · 458 阅读 · 0 评论 -
哈夫曼编码的实现
讲了半天,哈夫曼编码和字符集有什么关系呢?大家仔细观察,英文的字符,有的使用比较多,有的比较少,能不能使用比较短的比特为表示比较常用的字符呢?这些编码集合,本质上都是一个二进制和字符之间映射关系,拿最简单的 ASCII 来说吧,使用 0x30 代表字符 0 ,0x31 代表字符 1,当打印设备看到 0x30 后,就打印出字符 0 了。ASCII 最初是由美国弄出来,他们使用的英文,所以只考虑了英文中的字符,那还有很多字符,比如,阿拉伯文字、俄文这些文字怎么表示,于是就有了 UTF-8 这些。原创 2024-04-17 22:41:15 · 391 阅读 · 0 评论 -
有依赖的的动态规划问题
例如,兔子数列:f(x) = f(x - 1) + f(x -2), 我们知道 f 代表了计算公式,这里解放思想一下,如果 f 替换为数组,将每个 f(x) 的返回值返回,那么是不是就不用计算了,直接返回了,这样就节省了 CPU 递归和计算的时间,提高计算的效率,这样就对递归进行了优化。经典的 0-1 背包问题。它题目往往是这样有两个一维数组,第一个代表了容量,第二个代表价值,给定一个 N 正整数值,N 值是背包能装的容量,数组的一个元素代表了一个物品,一个物品只能装一个,问背包能装下的最大价值是多少?原创 2024-04-15 17:33:42 · 877 阅读 · 0 评论 -
表达式求值
加减乘除带括号表达式求值原创 2024-03-29 18:55:47 · 343 阅读 · 1 评论 -
补码的原理
怎么就想到这里了看了一道面试题目,如下所示:byte b = (byte)129;System.out.println(b);问输出结果。这个题目考察了四个知识点:整数的字面量默认是 int 类型的。而 int 类型占 32 个 bit 。byte 类型的是 8 ge bit 。能够表示的最大正整数是 127.补码的计算公式。强制类型转换129 = 2 的 7 次方 + 1所以在内存中的表示为: 0000 0000 0000 0000 0000 0000 1000 0001b原创 2021-05-15 18:13:46 · 946 阅读 · 2 评论 -
重学常见排序算法
最常见的有冒(冒泡)择(选择)路(插入)希(希尔)快(快速)归(归并)堆(堆排序)。 这一次把所有的常见的排序熟悉一遍,后面就一劳永逸了。冒泡算法连接:https://www.bilibili.com/video/BV1Mi4y1k7QT/冒泡排序算法的文字描述:一次比较数组中相邻两个元素大小,若 a[j] > a[j+1] , 则交换两个元素,两两都比较一遍为一轮排序,结果是让最大的元素排至最后。重复以上步骤,指导整个数组有序。先实现一版最简单。import java.util.原创 2022-03-28 22:10:46 · 274 阅读 · 0 评论 -
整数的计算
功能介绍输入计算整数加减乘除的字符串。解析并计算,得到结果。代码 /** * 解析计算公式里面的括号。 */ private static void bracketHandler(String input){ ArrayDeque<String> ad = new ArrayDeque<>(); String cal = "" ; char[] chars = input.toCharArray();原创 2021-11-23 09:16:43 · 183 阅读 · 0 评论 -
如何优化IF/ESE的结构
如何简化多层 if/else目前总结了三种简化多层 if/else 的方法:多态的方式。图结构解决语法树多态方式。多态的方式利用 Java 对象多态的特性。如下所示样式的语句。public void method(flag){ if(flag == var1){ //do_something }else if(flag == varr){ // do_something }else{ // the last choi原创 2021-05-31 08:41:13 · 192 阅读 · 0 评论 -
算法:去环行动
题目假设我们有如下数据:A B C D E C F G C 先使以 G 来分割这个 list ,如果是上面的数据,则得到如下两个 list :1. A B C D E C F G2. C 这个题目其实就是 Java 中 String 类中的 split 方法类似的功能。我倒是想出了一个类似递归的方式来解决这个问题,步骤如下所示:使用 list 的 contain 方法,判断 G 是否在 list 里面。如果 G 在数组里面,则使用 indexOf 找出 G 所在的位置 i。使用 s原创 2021-01-19 20:07:53 · 202 阅读 · 0 评论