
算法
小北的博客
10年+ Android 开发经验,熟练掌握 Android 、Flutter
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Java 排序算法-归并排序
算法思想归并排序(Merge)是将两个(或两个以上)有序表合并成一个新的有序表,即把待排序序列分为若干个子序列,每个子序列是有序的。然后再把有序子序列合并为整体有序序列。归并排序是建立在归并操作上的一种有效的排序算法。该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。 将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段间有序。若将两个有序表合并原创 2017-08-24 21:34:26 · 471 阅读 · 0 评论 -
经典的Java算法面试题
1、新浪面试题:编写一个方法,计算一个字符串中,第一个不重复的字符在当前字符串中的索引。public class JavaTest { //贪心算法 编写一个方法,计算一个字符串中,第一个不重复 的字符在当前字符串中的索引。 public static String array = "abuacdeaudbdfcefhph"; public static int[] conta原创 2017-10-11 17:35:51 · 7282 阅读 · 8 评论 -
n级阶梯,每次走一步或两步,问最多有多少种走法
重要的是理解这个逻辑, 第n布,走一步,即n-1,再求n-1个阶梯的走法, 走两步,即n-2,再求n-2个阶梯的走法, 以此,n级阶梯的走法是n-1个阶梯的走法与n-2个阶梯的走法的和。Java 代码实现如下:public static long getStepNumber(int n) { if (0 > n) { return 0; } if (n =原创 2017-08-29 20:34:50 · 6736 阅读 · 3 评论 -
最小堆解决TopK 问题 - Java代码实现
TopK问题是指从大量数据(源数据)中获取最大(或最小)的K个数据。 解决方法一、 对源数据中所有数据进行排序,取出前K个数据,就是TopK。 解决方法二 维护一个K长度的数组a[],先读取源数据中的前K个放入数组,对该数组进行升序排序,再依次读取源数据第K个以后的数据,和数组中最小的元素(a[0])比较,如果小于a[0]直接pass,大于的话,就丢弃最小的元素a[0],利用二分法找到其位原创 2018-01-11 20:11:07 · 1673 阅读 · 0 评论 -
最长递增子序列-Java 实现
1、Θ(n2) 打表实现 初始化对角线为 1; 对每一个 i,遍历 j(0 到 i-1): 若A[i] <= A[j],置 1。 若A[i] > A[j],取第 j 行的最大值加 1。 private static int getLargestLen(int[] array) { int[] max = new int[array.length]; fo...原创 2018-03-06 11:50:42 · 4960 阅读 · 1 评论