![](https://img-blog.csdnimg.cn/20201014180756919.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
剑指offer-数组
lupa1521
这个作者很懒,什么都没留下…
展开
-
二维数组中的查找
在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。思路:和右上角数比较,相等则返回;若查询值大于右上角数值,则向下查找row++;否则,向左查找column--;public class Solution { public boolean ...原创 2019-04-05 14:26:10 · 167 阅读 · 0 评论 -
旋转数组的最小数字
把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。 输入一个非减排序的数组的一个旋转,输出旋转数组的最小元素。 例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。 NOTE:给出的所有元素都大于0,若数组大小为0,请返回0。思路:旋转之后的数组可以划分为两个排序的数组,而且前面的子数组的元素都大于或者等于后面子数组的元素。利用二分法,...原创 2019-04-08 13:56:51 · 163 阅读 · 0 评论 -
旋转数组的最小数字
题目描述把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。 输入一个非减排序的数组的一个旋转,输出旋转数组的最小元素。 例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。 NOTE:给出的所有元素都大于0,若数组大小为0,请返回0。思路一:二分查找import java.util.ArrayList;public class So...原创 2019-04-24 11:42:46 · 87 阅读 · 0 评论 -
51、数组中重复的数字
51.在一个长度为n的数组里的所有数字都在0到n-1的范围内,找出数组中任意一个重复的数字思路:从头到尾依次扫描这个数组中的每个数字,当扫描到下标为i的数字时,首先比较这个数字(m)是不是等于i。若是,接着扫描下一个数字。若不是,再拿它和第m个数字比较。如果它和第m个数字相等,就找到了一个重复的数字(i和m位置)如果它和m个数字不相等,就把第i个数字交换。重复比较,重复交...原创 2019-05-04 13:50:48 · 94 阅读 · 0 评论 -
52.构建乘积数组
52.给定一个数组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]。其中A[i] = 1。不能使用除法,这道题的解法把每个结果B[i]分成两个部分C[i]与D[i]B[i] = A[0]*A[1]*A[2]*...*A[i-1]*A[i+1]*A[i+2]*...*A[n...原创 2019-05-04 14:18:10 · 81 阅读 · 0 评论 -
38、数字在排序数组中出现的次数
思路:二分查找,中间值比要查找数值大,左部分查找中间值比要查找数组小,有部分查找中间值等于要查找的数,左部分查找第一次出现,右部分查找最后一次出现import java.util.*;public class Solution { public int GetNumberOfK(int [] array , int k) { int ...原创 2019-05-12 13:43:19 · 82 阅读 · 0 评论