摘要: #如何实现大整数相加 摘自漫画算法: 题目:给出两个很大的整数,要求实现程序求出两个整数之和。 注意:很多人第一想法就是直接用long存储,在程序里相加不就行了;但是如果这两个整数大得连long类型都装不下呢?比如两个100位的整数? 解题思路 在讲解大整数相加之前,先来回顾一下小学数学课,在上小学 阅读全文
posted @ 2020-06-09 20:25 瞬间的花逝 阅读(608) 评论(0) 推荐(1) 编辑
摘要: 删除k个数字后的最小值 摘自漫画算法: 题目:给出一个整数,从该整数中去掉k个数字,要求剩下的数字形成的新整数尽可能小,应该如何选取被去掉的数字? 其中整数的长度大于或等于k,给出的整数大小可以超过long类型的数字范围。什么意思? 例子: 假设给出一个整数1593212,删去3个数字,新整数最小的 阅读全文
posted @ 2020-06-08 20:40 瞬间的花逝 阅读(703) 评论(0) 推荐(0) 编辑
摘要: 寻找全排列的下一个数 摘自漫画算法: 题目:给出一个正整数,找出这个正整数所有数字全排列的下一个树。说的通俗点就是在一个整数所包含数字的全部组合中,找到一个大于且仅大于原数的新整数。 例子: 如果输入12345,则返回12354 如果输入12354,则返回12435 如果输入12435,则返回124 阅读全文
posted @ 2020-06-07 20:33 瞬间的花逝 阅读(587) 评论(0) 推荐(0) 编辑
摘要: 如何用栈实现队列 摘自漫画算法: 题目:用栈模拟一个队列,要求实现队列的两个基本操作:入队、出队。 解题思路 栈的特点是先入后出,出入一款苏都是在同一端(栈顶)。如图: 队列特点是先入先出,出入元素是在不同的两端(队头和队尾)。如图: 既然我们拥有两个栈,那么可以让其中一个栈作为队列的入口,负责插入 阅读全文
posted @ 2020-06-06 21:33 瞬间的花逝 阅读(302) 评论(0) 推荐(0) 编辑
摘要: 最小栈的实现 摘自漫画算法: 题目:实现一个栈,该栈带有出栈(pop)、入栈(push)、取最小元素(getMin)3个方法。要保证这3个方法的时间复杂度都是O(1)。 如图: 解法步骤 1、设原有的栈叫作栈A,此时创建一个额外的“备胎”栈B,用于辅助栈A。 2、当第1个元素进入栈A时,让新元素也进 阅读全文
posted @ 2020-06-05 20:20 瞬间的花逝 阅读(230) 评论(0) 推荐(0) 编辑
摘要: 如何判断链表有环 摘自漫画算法: 题目:有一个单向链表,链表中有可能出现“环”,就像下图这样,那么如何用程序来判断该链表是否为有环链表呢? 方法1 首先从头节点开始,以此遍历单链表中的每一个节点。每遍历一个新节点,就从头检查新节点之前的所有节点,用新节点和此节点之前所有节点依次做比较。如果发现新节点 阅读全文
posted @ 2020-06-04 20:54 瞬间的花逝 阅读(498) 评论(0) 推荐(0) 编辑
摘要: 什么是桶排序 摘自漫画算法: 桶排序是一种线性时间的排序算法。类似于计数排序所创建的统计数组,桶排序需要创建若干个桶来协助排序。 那么,桶排序中所谓的“桶”,有是什么呢? 假设有一个非整数数列如下: 4.5,0.84,3.25,2.18,0.5 让我们来看看桶排序的工作原理: 桶排序的第1步,就是创 阅读全文
posted @ 2020-06-02 19:37 瞬间的花逝 阅读(231) 评论(0) 推荐(0) 编辑
摘要: 初始计数排序 摘自漫画算法: 计数排序是一种不基于元素比较,利用数组索引来确定元素的正确位置的。 假设数组中有20个随机整数,取值范围0~10,要求用最快的速度把这20个整数从小到大进行排序。 如何给这些无序的随机整数进行排序呢? 考虑到这些整数只能够在0、1、2、3、4、5、6、7、8、9、10这 阅读全文
posted @ 2020-05-31 12:09 瞬间的花逝 阅读(363) 评论(0) 推荐(0) 编辑
摘要: 什么是堆排序? 摘自漫画算法: 记得二叉堆的特性是什么吗? 最大堆的堆顶是整个堆中最大的元素。 最小堆的堆顶是整个堆中最小的元素。 以最大堆为例,如果删除一个最大堆的堆顶(并不是完全删除,而是跟末尾的节点交换位置),经过自我调整,第2大的元素就会被交换上来,成为最大堆的新堆顶。 如上图所示,在删除值 阅读全文
posted @ 2020-05-25 15:40 瞬间的花逝 阅读(129) 评论(0) 推荐(0) 编辑
摘要: 什么是快速排序? 摘自漫画算法: 同冒泡排序一样,快速排序也属于交换排序,通过元素之间的比较和交换位置来达到排序的目的。 不同的是,冒泡排序在每一轮中只把1个元素冒泡到数列的一端,而快速排序则在每一轮挑选一个基准元素,并让其他比它大的元素移动到数列的一端,比它小的元素移动到数列的另一端,从而把数列拆 阅读全文
posted @ 2020-05-22 22:52 瞬间的花逝 阅读(519) 评论(0) 推荐(0) 编辑