算法
一颗向上的草莓
后台开发者,前端爱好者,个人博客:http://catchu.github.io
展开
-
拓扑排序详解与实现
拓扑排序详解与实现介绍拓扑排序,很多人都可能听说但是不了解的一种算法。或许很多人只知道它是图论的一种排序,至于干什么的不清楚。又或许很多人可能还会认为它是一种啥排序。而实质上它是对有向图的顶点排成一个线性序列。至于定义,百科上是这么说的:对一个有向无环图(Directed Acyclic Graph简称DAG)G进行拓扑排序,是将G中所有顶点排成一个线性序列,使得图中任意一对顶点u和v,若边<u,v>∈E(G),则u在线性序列中出现在v之前。通常,这样的线性序列称为满足..转载 2020-05-17 21:22:07 · 598 阅读 · 0 评论 -
老鼠毒药问题、犯人问题
1、有100瓶液体。其中有99瓶是水,一瓶是毒药,在外表上外表上完全一样。问至少需要多少只老鼠可以确定哪一瓶是毒药?答案:需要7只。解释:将一百瓶水编号。将编号转化为二进制。例如:第1瓶 :0000 001第2瓶 :0000 010....第36瓶 :0100 100....第56瓶 :0111 000...第100瓶:1100 1001、七...转载 2020-03-27 18:55:08 · 6430 阅读 · 0 评论 -
Java求两个数的最大公约数及最小公倍数、求多个数的最大公约数及最小公倍数
今天参加腾讯笔试,做编程题时在最小公倍数、最大公约数这些这么简单的知识点上卡壳了,自信心受到强烈的打击,下来后猛复习了这方面的相关编程知识。有以下几个关键点:1、任意正整数的最大公约数、最小公倍数都是它本身。2、求两个数的最大公约数(递归法、相减法、辗转相除法)3、求两个数的最小公倍数,两个数的最小公倍数与它们的最大公约数之间存在如下关系:某两个数a,b的最小公倍数=(a*b)/a与b...转载 2020-03-27 16:42:33 · 1485 阅读 · 0 评论 -
Java实现快速排序(快排)
Java实现快速排序(快排)转载 2020-03-24 18:18:48 · 121 阅读 · 0 评论 -
大顶堆和小顶堆-java
一、大顶堆和小顶堆的原理1、大顶堆根结点(亦称为堆顶)的关键字是堆里所有结点关键字中最大者,称为大顶堆。大根堆要求根节点的关键字既大于或等于左子树的关键字值,又大于或等于右子树的关键字值。2、小顶堆根结点(亦称为堆顶)的关键字是堆里所有结点关键字中最小者,称为小顶堆。小根堆要求根节点的关键字既小于或等于左子树的关键字值,又小于或等于右子树的关键字值。3、大顶推和小顶堆的实现p...原创 2020-03-20 11:02:50 · 722 阅读 · 0 评论 -
LeetCode 239. 滑动窗口最大值 java实现
239.滑动窗口最大值给定一个数组nums,有一个大小为k的滑动窗口从数组的最左侧移动到数组的最右侧。你只可以看到在滑动窗口k内的数字。滑动窗口每次只向右移动一位。返回滑动窗口最大值。示例:输入: nums =[1,3,-1,-3,5,3,6,7], 和 k = 3输出:[3,3,5,5,6,7]解释: 滑动窗口的位置 ...转载 2020-02-28 23:10:31 · 198 阅读 · 0 评论 -
Java实现冒泡排序
原理:每次比较两个相邻的元素,将较大的元素交换至右端。思路:每次冒泡排序操作都会将相邻的两个元素进行比较,看是否满足大小关系要求,如果不满足,就交换这两个相邻元素的次序,一次冒泡至少让一个元素移动到它应该排列的位置,重复N次,就完成了冒泡排序。通过一个图来简单理解一下一次冒泡的过程【注意:图中每一竖列是一次比较交换】:图中可以看出,经过一次冒泡,6这个当前数组中最大的元素飘到了最上...原创 2019-09-16 18:19:45 · 146 阅读 · 0 评论 -
反转数组
定义一个函数reverse(int[] array, int begin, int end),实现反转begin和end中的元素,不能使用java现成的api,举例:数组{1,2,3,4,5,6},begin是1,end是4,则反转后的数组是:{1,5,4,3,2,6}。代码如下:public class ReverseArray { public static void ...原创 2019-09-16 18:49:14 · 1145 阅读 · 0 评论 -
小于 K 的两数之和
题目描述题目来源于 LeetCode 上第 1099 号问题:小于 K 的两数之和。给你一个整数数组A和一个整数K,请在该数组中找出两个元素,使它们的和小于K但尽可能地接近K,返回这两个元素的和。如不存在这样的两个元素,请返回-1。示例 1:输入:A =[34,23,1,24,75,33,54,8], K = 60输出:58解释:34 和 24 相加得到 ...转载 2019-09-19 17:19:28 · 152 阅读 · 0 评论