
----------数组
文章平均质量分 58
ax_hacker
网络,redhat,信息安全,c++,opengl
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
数组--1-二维数组中查找
题目 在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。 思路 首先选取数组中右上角的数字。如果该数字等于要查找的数字,查找过程结束;如果该数字大于要查找的数组,剔除这个数字所在的列;如果该数字小于要查找的数字,剔除这个数字所在的行。也就是说如果要查找的数字不在数组的右上角,则...转载 2018-07-02 19:43:20 · 184 阅读 · 0 评论 -
数组--10-和为定值的连续k个数
题目描述 小明很喜欢数学,有一天他在做数学作业时,要求计算出9~16的和,他马上就写出了正确答案是100。但是他并不满足于此,他在想究竟有多少种连续的正数序列的和为100(至少包括两个数)。没多久,他就得到另一组连续正数和为100的序列:18,19,20,21,22。现在把问题交给你,你能不能也很快的找出所有和为S的连续正数序列? Good Luck! 输出描述: 输出所有和为S的连续正数...原创 2018-07-17 22:22:18 · 388 阅读 · 0 评论 -
数组--9-k-sum-和为定值的k个数
一、2Sum,3Sum,4Sum,…,nSum这类问题 主要用到了hashmap结构,前后指针的方法 1、采用map结构,时间复杂度O(n) #include <iostream> #include <vector> #include <map> using namespace std; class Solution { public: ...原创 2018-07-17 21:48:01 · 599 阅读 · 0 评论 -
数组--8-数组逆序对
题目 在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对。输入一个数组,求出这个数组中的逆序对的总数P。并将P对1000000007取模的结果输出。 即输出P%1000000007。 输入描述: 题目保证输入的数组中没有的相同的数字 数据范围: 对于%50的数据,size<=10^4 ...原创 2018-07-17 14:44:53 · 170 阅读 · 0 评论 -
数组--5-最小的K个数
题目 输入n个整数,找出其中最小的K个数。例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4。 思路 1、(array被改变了)结合数组-4的第一种类似快排partion的思想。最小的k个数,那么找到第k个数,其左边就是最小的k个数 (不是有序的),所以时间复杂度是O(N), 快排的结果是base两边都是有序的,时间复杂度是O(NlogN)。 快排...原创 2018-07-06 22:45:16 · 217 阅读 · 0 评论 -
数组--4-出现次数超过一半的数字
题目 数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}。由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2。如果不存在则输出0。 思路 数组元素可以被改变 时间复杂度 O ( n ),快排时间复杂度是O(NlogN)是因为其对 middle左边和右...原创 2018-07-06 20:47:40 · 152 阅读 · 0 评论 -
数组--7-把数组排成最小的数
题目 输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323。 思路 遇到这个题,全排列当然可以做,但是时间复杂度为O(n!)。在这里我们自己定义一个规则,对拼接后的字符串进行比较。 排序规则如下: 若ab > ba 则 a 大于 b, 若ab < ba ...转载 2018-07-05 20:37:12 · 173 阅读 · 0 评论 -
数组--6-连续子数组最大和
转载:http://cuijiahua.com/blog/2017/12/basis_30.html 题目 在古老的一维模式识别中,常常需要计算连续子向量的最大和,当向量全为正数的时候,问题很好解决。但是,如果向量中包含负数,是否应该包含某个负数,并期望旁边的正数会弥补它呢?例如:{6,-3,-2,7,-15,1,2,2},连续子向量的最大和为8(从第0个开始,到第3个为止)。你会不会被...转载 2018-07-05 17:07:05 · 150 阅读 · 0 评论 -
数组--3-整数组顺序使奇数位于偶数前面
题目: 输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。 思路 1、相对位置不变 可以申请空间 创建双向队列,遍历数组,奇数前插入,偶数后插入。 最后使用assign方法实现不同容器...原创 2018-07-03 16:19:28 · 169 阅读 · 0 评论 -
数组--2-旋转数组的最小数字
题目 把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。 输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素。 例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。 NOTE:给出的所有元素都大于0,若数组大小为0,请返回0。 思路 旋转之后的数组实际上可以划分为两个排序的字数组,而且前面的字数组的元素大于或者等于后面字数组的元...原创 2018-07-03 11:36:35 · 135 阅读 · 0 评论 -
数组--11-中位数
题目: 如何得到一个数据流中的中位数?如果从数据流中读出奇数个数值,那么中位数就是所有数值排序之后位于中间的数值。如果从数据流中读出偶数个数值,那么中位数就是所有数值排序之后中间两个数的平均值。 思路: 用大顶堆实现左边的的数据容器,小顶堆实现右边的数据容器。 有一点需要注意,我们要保证数据被平均分配到两个堆中,因此两堆大小之差不能超过1。实现方法是数据流中奇数位的数插入小顶堆中,偶...转载 2018-07-18 15:23:18 · 262 阅读 · 0 评论