
数学
migule-
这个作者很懒,什么都没留下…
展开
-
TopK算法问题解题技巧
TopK问题就是让你在给定序列中寻找最大或者最小的K个数,这类问题通常有三类结局方法。方法一:使用排序将序列排序后输出最大或最小的K位,此类方法简单但是一般不符合面试要求。 class Solution { public int[] getLeastNumbers(int[] arr, int k) { int[] vec = new int[k]; Arrays.sort(arr); for (int i = 0; i < k; ++i)原创 2021-05-31 23:25:29 · 138 阅读 · 0 评论 -
KMP算法
Java实现KMP算法KMP 算法就利用之前判断过信息, 通过一个 next 数组, 保存模式串中前后最长公共子序列的长度, 每次回溯时, 通过 next 数组找到, 前面匹配过的位置, 省去了大量的计算时间。KMP算法核心之一是部分匹配表,部分匹配” 的实质是, 有时候, 字符串头部和尾部会有重复。 比如, ” ABCDAB” 之中有两个” AB” , 那么它的” 部分匹配值” 就是 2(” AB” 的长度) 。 搜索词移动的时候, 第一个” AB” 向后移动 4 位(字符串长度-部分匹配值) ,原创 2021-05-14 19:58:46 · 80 阅读 · 0 评论 -
排序算法之桶排序
Java实现桶排序算法步骤:(1)建立10个桶,每个桶大小与待排数组大小相等,同时建立一个一维数组存储每个桶中的数据个数(2)计算出序列中的最大值,确定最大值的位数来确定要循环的次数(3)遍历一次数组,对数据取余后放入对应的桶中,同时计数+1(4)遍历完成后将桶中的数据依次取出放入原数组以备下一次遍历使用,同时清空计数(5)重复(3)(4)代码:public static int[] radixSort(){ int[] arr = new int[]{2,1,5,9,156原创 2021-05-14 15:27:02 · 130 阅读 · 0 评论 -
排序算法之快速排序
Java实现快速排序快速排序是比较常用的算法之一,也是作为程序员必须要掌握的一种算法,快排的时间复杂度为O(n logn),空间复杂度为O(logn),但它是一种不稳定的排序算法。快速排序的递归实现步骤如下:从数列中挑出一个元素,称为 “基准”(pivot);重新排序数列,所有元素比基准值小的摆放在基准前面,所有元素比基准值大的摆在基准的后面(相同的数可以到任一边)。在这个分区退出之后,该基准就处于数列的中间位置。这个称为分区(partition)操作;递归地(recursive)把小于基准值元原创 2021-05-14 14:28:46 · 78 阅读 · 0 评论 -
排序算法之插入排序
Java实现插入排序插入排序是稳定的排序方法,平均时间复杂度为O(n^2)。插入排序的思想是将第一个元素认为已经有序,取出下一个元素从后往前扫描比较并插入序列中。具体步骤如下:(1)从第一个元素开始,该元素可以认为已经被排序;(2)取出下一个元素,在已经排序的元素序列中从后向前扫描;(3)如果该元素(已排序)大于新元素,将该元素移到下一位置;(4)重复步骤3,直到找到已排序的元素小于或者等于新元素的位置;(5)将新元素插入到该位置后;(6)重复步骤2~5。代码如下:public stati原创 2021-05-14 14:01:16 · 64 阅读 · 0 评论 -
自定义数据协议,将多位日期保存在字节数组中
自定义数据报协议来保存多位的日期数据。如2021年5月11日21时58分20秒,使用无符号的String存储为20210511215820,将这个数据保存在6字节的数组中,依次为年月日时分秒。byte[] time = new byte[6]; Date date = new Date(); DateFormat dateFormat = new SimpleDateFormat("yyyyMMddHHmmss"); String format = dat原创 2021-05-11 22:15:26 · 296 阅读 · 0 评论