![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构之算法面试题
文章平均质量分 76
SanisyMe
时间见证成长,遇见最好的自己,等待最好的你。
展开
-
Java实现大整数相加
在不使用BigInteger这个类的情况下,如何自己去实现两个超级大的数相加呢?首先我们来看一下加法的原则: 1.同号相加,把两数相加,结果符号位取任意一个数的符号 2.异号相加,取较大的数减去较小的数,结果符号位取较大的数的符号位由于是超级大数,我们使用String来存储。原创 2016-04-01 15:07:06 · 10953 阅读 · 1 评论 -
Java实现大数相乘
两个很大的整数如何实现相乘呢?大数超出了基本类型的表示范围,所以不能用基本类型直接相乘。我们可以通过String来对它们,各位进行分解地相乘。先来看看如何实现,首先研究一下基本的乘法规则。个位只能由个位相乘产生,十位由十位乘以个位产生,百位由百位乘以个位产生。同时还会有进位。所以获取相乘的两个数的结果位result[i+j] 的值应等于A的第i位乘以B的第j位,加上A的第j位乘以B的第i位原创 2016-04-05 12:15:31 · 1138 阅读 · 0 评论 -
给定一个数组,找出数组缺少的最小的正整数
题目使这样的:请设计一个高效算法,查找数组中未出现的最小正整数。给定一个整数数组A,请返回数组中未出现的最小正整数。测试样例:[-1,2,3,4]返回1一看到这个题目我想到的是用另外的一个数组B,长度为A的长度+1,来存储遍历数组A的数的值。 if(A[i] == i+1) B[i+1] = A[i]。然后遍历数组B,出现空缺的地方即是最小未出现的正整数。但是假如要求原创 2016-04-07 17:56:46 · 3846 阅读 · 1 评论 -
给定两个有序数组,找出合并之后的数组中位数
中位数定义:假如一个数组的长度Len为偶数,那么中位数为第 Len/2 个数;如果Len为奇数,那么中位数为第Len/2+1个数。比如 Arr[ 1, 2, 3, 4, 5]中位数为3;Arr[ 2, 3, 4, 5]中位数为3。给定两个递增排序数组,请设计一种高效算法求出两个数组的中位数。比如 A[ 1, 2, 3, 4, 5] B[ 2, 3, 4, 5]那么原创 2016-04-09 03:01:47 · 6730 阅读 · 3 评论 -
面试题之螺旋矩阵
给定一个m*n的矩阵,按照螺旋顺序返回所有元素。举例: 1 2 3 8 9 4 7 6 5返回的应该是1 2 3 4 5 6 7 8 9.从左边开始,当碰撞到右边的边界时,转向 (向下)。然后从右到左,碰撞到左边边界时,转向 (向上)。一直到最后一个元素。public static Ar原创 2016-04-10 01:06:23 · 590 阅读 · 0 评论 -
Java实现八大排序之一
1.选择排序先来说一下选择排序的基本思想:从数组的第一个数开始,将它与后面的每个数进行比较,如果比它小,就交换这两个数。这样一遍下来便可以找出最小的数了;接着从第二个数开始,重复第一个步骤。直到最后一个数,这样就完成了数组元素的排序。文字太抽象,上图吧。 /** * 选择排序 * @param arr * */ public void selectSor原创 2016-03-28 22:01:04 · 943 阅读 · 0 评论