
算法:数组
剑指offer中的数组类问题
Stephen.zhou
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
剑指offer (51)
题目 : 给定一个数组A[0,1,…,n-1],请构建一个数组B[0,1,…,n-1],其中B中的元素B[i]=A[0]A[1]…*A[i-1]A[i+1]…*A[n-1]。不能使用除法。思路 :剑指的思路,B[i]的值可以看作下图的矩阵中每行的乘积。下三角用连乘可以很容求得,上三角,从下向上也是连乘。因此我们的思路就很清晰了,先算下三角中的连乘,即我们先算出B[i]中的一部分,然后倒过来按上...原创 2020-02-08 09:00:24 · 159 阅读 · 0 评论 -
剑指offer (50)
题目 :在一个长度为n的数组里的所有数字都在0到n-1的范围内。 数组中某些数字是重复的,但不知道有几个数字是重复的。也不知道每个数字重复几次。请找出数组中任意一个重复的数字。 例如,如果输入长度为7的数组{2,3,1,0,2,5,3},那么对应的输出是第一个重复的数字2。思路 :此题较为简单 ,请看代码注释 public boolean duplicate(int [] numbers, ...原创 2020-02-08 08:42:24 · 267 阅读 · 0 评论 -
剑指offer (40)
题目 : 一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。思路 :首先,位运算中异或的性质:两个相同数字异或=0,一个数和0异或还是它本身。当只有一个数出现一次时,我们把数组中所有的数,依次异或运算,最后剩下的就是落单的数,因为成对儿出现的都抵消了。依照这个思路,我们来看两个数(我们假设是AB)出现一次的数组。我们首先还是先异或,剩下的数字肯定是...原创 2020-02-07 21:18:16 · 159 阅读 · 0 评论 -
剑指offer (37)
题目 : 统计一个数字在排序数组中出现的次数。思路 :看见有序,肯定是二分查找了,算大比较简单,不多说,值得一提的是,不要拘泥于递归,要会写循环算法 public static int getNumberOfK (int []array ,int k) { int length = array.length; if (length == 0) { return 0; }...原创 2020-02-07 21:07:02 · 152 阅读 · 0 评论 -
剑指offer (32)
题目 : 输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323。思路 :所以在这里自定义一个比较大小的函数,比较两个字符串s1, s2大小的时候,先将它们拼接起来,比较s1+s2,和s2+s1那个大,如果s1+s2大,那说明s2应该放前面,所以按这个规则,s2就应该排在s1...原创 2020-02-06 21:10:48 · 143 阅读 · 0 评论 -
剑指offer (28)
题目 : 数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}。由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2。如果不存在则输出0思路 : 数组排序后,如果符合条件的数存在,则一定是数组中间那个数。(比如)1,2,2,2,3 或 2,2,2,3,4 或2,3,4,4,4 等等public class So...原创 2020-02-06 20:53:36 · 103 阅读 · 0 评论 -
剑指offer (13)
题目 : 输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。思路 :从题目得出的信息:相对位置不变—>保持稳定性;奇数位于前面,偶数位于后面 —>存在判断,挪动元素位置;这些都和内部排序算法相似,考虑到具有稳定性的排序算法不多,例如插入排序,归并排序等;这里采用...原创 2020-02-06 15:48:01 · 95 阅读 · 0 评论 -
剑指offer (6)
题目 : 把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素。例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。NOTE:给出的所有元素都大于0,若数组大小为0,请返回0。思路 :根据题意说明是一个递增数组的旋转,所以如题所示{3.4.5},{1,2}还是局部递增的,在这种的数组中...原创 2020-02-06 14:57:41 · 88 阅读 · 0 评论 -
剑指offer (1)
题目:在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。思路: 矩阵是有序的,从左下角来看,向上数字递减,向右数字递增因此要从左下角开始查找,当要查找数字比左下角大时,右移 要查找数字比左下角大时,上移/* * 思路 * 矩阵是有序的,从左下角来看,...原创 2020-02-06 10:10:58 · 142 阅读 · 0 评论