#java算法
文章平均质量分 61
积善之家、必有余庆
我相信梦想可以到达的地方,总有一天脚步也可以到达!
展开
-
【素数伴侣(二分图匹配&匈牙利算法)】
这里是引用匈牙利算法是由匈牙利数学家Edmonds于1965年提出,因而得名。匈牙利算法是基于Hall定理中充分性证明的思想,它是部图匹配最常见的算法,该算法的核心就是寻找增广路径,它是一种用增广路径求二分图最大匹配的算法。-------等等,看得头大?那么请看下面的版本:通过数代人的努力,你终于赶上了剩男剩女的大潮,假设你是一位光荣的新世纪媒人,在你的手上有N个剩男,M个剩女,每个人都可能对多名异性有好感(惊讶-_-||暂时不考虑特殊的性取向),如果一对男女互有好感,那么你就可以把这一对撮合在一.原创 2021-01-09 21:42:31 · 227 阅读 · 0 评论 -
【Java 判断素数的几个方法】简单理解
最近刷题刷到了包含判断素数问题的题型,这里写篇博客来分享下!首先我们来讲下什么是素数1、素数的概念素数在数学中我们也叫:质数,两个是一个东西素数:一个大于1的整数,只能被 1 和 自身 整除的的整数,这种整数我们称为:素数;例如:2,3,5,7,11,13...原创 2021-01-08 18:10:36 · 4682 阅读 · 0 评论 -
【华为机测题:合唱队】简单理解
动态规划的知识考点我们先来看看这道题的描述吧!题目描述计算最少出列多少位同学,使得剩下的同学排成合唱队形说明:N位同学站成一排,音乐老师要请其中的(N-K)位同学出列,使得剩下的K位同学排成合唱队形。合唱队形是指这样的一种队形:设K位同学从左到右依次编号为1,2…,K,他们的身高分别为T1,T2,…,TK, 则他们的身高满足存在i(1<=i<=K)使得T1<T2<…<Ti-1Ti+1>…>TK。你的任务是,已知所有N位同学的身高,计算最少需.原创 2021-01-05 10:27:13 · 410 阅读 · 0 评论 -
【KMP算法和暴力求解法】字符串匹配
暴力求解法从字符串 str1中匹配,子字符串 str2如果当前字符匹配成功, 即 str1[i]==str2[j], 则 i++; j++; 继续匹配下一个字符如果当前字符匹配失败, 则 i=i-(j-1); j=0; 也就是每次匹配失败时, i回溯, j被置为0图解:1、我们比较i指针指向的字符和j指针指向的字符是否一致。如果一致就都向后移动,如果不一致,如下图:*2、 A和E不相等,那就把i指针移回第1位(假设下标从0开始),j移动到模式串的第0位,然后又重新开始这个步骤:分析原创 2020-12-11 23:08:13 · 371 阅读 · 0 评论 -
【动态规划 华为机试:购物单】简单理解
希望我的这篇博客可以让你对【动态规划】有更深入了解在解决购物单机试题之前,大家可以看下我的这篇博客:动态规划,希望可以对您有所帮助题目描述王强今天很开心,公司发给N元的年终奖。王强决定把年终奖用于购物,他把想买的物品分为两类:主件与附件,附件是从属于某个主件的,下表就是一些主件与附件的例子:主件 附件电脑 打印机,扫描仪书柜 图书书桌 台灯,文具工作椅 无如果要买归类为附件的物品,必须先买该附件所属的主件。每个主件可以有 0 个、 1 个或 2 个附件。附件不再有从属于自己的附件.原创 2020-11-21 15:54:17 · 781 阅读 · 0 评论 -
【动态规划算法 01背包问题 图解+画表】简单理解
图解+表 理解动态规划算法1、动态规划算法的思想将大问题划分为小问题进行解决,从而一步步获取最优的处理办法动态算法和分治算法类似,基本都是将求解的问题,我们先分为子问题,先求解子问题的解,然后从这些子问题的解得到原问题的解与分治算法不同的是,适用于动态规的问题,经分解得到的子问题往往不是互相独立的,及就是下一个子问题的解是建立在上一个子阶段的基础上,进一步进行求解动态规划可以通过填表的方式来逐步的推进说了这么多,不如举个栗子实在,上题2、01背包问题01背包问题是动态规划算法的一个出.原创 2020-11-21 14:32:37 · 3087 阅读 · 0 评论 -
【Java 基数排序分析】简单理解
一、基数排序基数排序(radix sort)属于“分配式排序”(distribution sort),又称“桶子法”(bucket sort)或bin sort,顾名思义,它是透过键值的部份资讯,将要排序的元素分配至某些“桶”中,藉以达到排序的作用,基数排序法是属于稳定性的排序,其时间复杂度为O (nlog®m),其中r为所采取的基数,而m为堆数,在某些时候,基数排序法的效率高于其它的稳定性...原创 2020-03-16 15:21:30 · 203 阅读 · 0 评论 -
【Java 归并排序分析】简单理解
一、非递归实现什么是归并排序?归并排序(MERGE-SORT)是建立在归并操作上的一种有效的排序算法,该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段间有序。若将两个有序表合并成一个有序表,称为二路归并。归并排序是一种稳定的排序方法。/** * 非递归代码实现 ...原创 2020-03-11 12:56:26 · 192 阅读 · 0 评论 -
【Java 二分查找递归和非递归 面试题】简单理解
一、二分查找二分查找也叫折半查找,每次查找缩减当前元素量的一半,这种查找效率是很惊人的时间复杂度:假设我们有n个数据,查找一次,元素量变为:2/n;查找k次后的区间:n/2k,等比数列,当n/2k = 1时,k就是总的缩小次数,=> O(K) = logn二、二分查找的递归,非递归,面试题非递归: /** *二分查找非递归方式 * @param arr 查找...原创 2020-03-07 18:01:33 · 276 阅读 · 0 评论 -
【Java 冒泡、选择,插入排序分析】简单理解
(假设我们的三种排序最终把数字从小到大排的)一、冒泡排序思想:对排序序列从前往后(从下标较小的元素开始),依次对相邻元素进行比较,若发现逆序就交换 使值较大的元素往后移动,此过程像水底下的泡泡往上冒。代码实现:public class TestBubble { public static void main(String[] args) { //测试下冒泡排序的速度...原创 2020-02-29 17:57:28 · 109 阅读 · 0 评论