概述 前面算法系列文章有写过分治算法基本原理和实践,对于分治算法主要是理解递归的过程。二分法是分治算法的一种,相比分治算法会简单很多,因为少了递归的存在。 在计算机科学中,二分查找算法(英语:binary search algorithm),也称折半搜索算法(英语:half-interval sea ...
分类:
其他好文 时间:
2021-07-26 16:54:02
阅读次数:
0
递归遍历文件夹,对比文件md5 首先,需要引用 md5 的相关代码,参考这篇文章,防止链接内容被删除,这里再记录一次: md5.h #ifndef MD5_H #define MD5_H #include <string> #include <fstream> /* Type define */ t ...
分类:
编程语言 时间:
2021-07-16 17:44:14
阅读次数:
0
前言: 冒泡,选择:使用了普通双指针法 插入,快速,归并:使用了二分法,递归 冒泡排序 原理:不断比较相邻两个数得大小,把较大的数交换到靠后的位置 def bubbleSort(iList): '''冒泡排序 ''' if len(iList) <= 1: return iList for i in ...
分类:
编程语言 时间:
2021-07-16 17:32:50
阅读次数:
0
快速排序: 总体最优,数据大时性能最好 具体实现:设置一个基准值,小于基准值放左边,大于基准值放右边,最后递归继续排左右两侧的,最后排完后合并 /** * 快速排序 * * @param $array * @return array */ public function sort($array): ...
分类:
编程语言 时间:
2021-07-12 18:06:10
阅读次数:
0
Problem \(\text{Solution:}\) 这题唯一需要学习 or 复习的点就是它的查询了。 这东西一眼的维护左右最长连续的 \(0\) 的长度就做完了。标记什么的都很简单。代码量略微大一点。 注意在询问的时候: 如果完全在左右区间,就分别递归。 否则,我们还需要考虑跨越区间的最值。那 ...
分类:
其他好文 时间:
2021-07-05 17:12:33
阅读次数:
0
看见一句话,感觉很好,记录一下:贵有恒,何须三更醒五更眠。最无益,莫过一日曝十日寒。 谈到中序遍历,常规的思路一个是递归,一个是迭代,其中迭代的思想需要显式的维护一个栈,以此来辅助遍历,但这连两种方法都不能达到O1的空间复杂度。刷题的时候看到一个巧妙的方法,利用二叉树中的闲散指针,每个节点访问两次, ...
分类:
其他好文 时间:
2021-07-05 16:53:36
阅读次数:
0
方法一:递归 遍历即从跟开始,递归的先访问左节点再访问右节点。中序遍历在访问完左节点后访问该节点的值。 1 /** 2 * Definition for a binary tree node. 3 * public class TreeNode { 4 * int val; 5 * TreeNode ...
分类:
其他好文 时间:
2021-07-02 15:49:51
阅读次数:
0
changeData (data) { const arr = [] if (data.length !== 0) { data.forEach(item => { const obj = {} obj.id = item.path obj.label = item.name if (item.ch ...
分类:
其他好文 时间:
2021-07-01 16:42:14
阅读次数:
0
第一,先了解业务再重构。 先把业务了解清楚,再去重构,不然这次重构很大可能是失败的,并且会导致你提桶跑路。 第二,小步快跑。 无论如何,还是要保持小步快跑的方式,每次改动较少的地方,然后完成上线。而不要一次性改动太多的地方。 第三,注重沟通。 积极与领导沟通,让他明白你当前的进度,必要时咨询他的意见 ...
分类:
其他好文 时间:
2021-07-01 16:26:40
阅读次数:
0
通常sort和uniq一起使用,sort在前,uniq在后。 uniq -c是把个数统计在一行的最前面;uniq -u是去重但不打印重复个数。 但uniq的去重是相邻且相同的缩为一个 # cat data1 1 2 2 2 2 3 3 1 1 1 # cat data1 |uniq -c 1 1 4 ...
分类:
其他好文 时间:
2021-06-30 18:17:48
阅读次数:
0