![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
----------数组
文章平均质量分 57
ax_hacker
网络,redhat,信息安全,c++,opengl
展开
-
数组--1-二维数组中查找
题目在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。思路首先选取数组中右上角的数字。如果该数字等于要查找的数字,查找过程结束;如果该数字大于要查找的数组,剔除这个数字所在的列;如果该数字小于要查找的数字,剔除这个数字所在的行。也就是说如果要查找的数字不在数组的右上角,则...转载 2018-07-02 19:43:20 · 130 阅读 · 0 评论 -
数组--10-和为定值的连续k个数
题目描述小明很喜欢数学,有一天他在做数学作业时,要求计算出9~16的和,他马上就写出了正确答案是100。但是他并不满足于此,他在想究竟有多少种连续的正数序列的和为100(至少包括两个数)。没多久,他就得到另一组连续正数和为100的序列:18,19,20,21,22。现在把问题交给你,你能不能也很快的找出所有和为S的连续正数序列? Good Luck!输出描述:输出所有和为S的连续正数...原创 2018-07-17 22:22:18 · 343 阅读 · 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 · 538 阅读 · 0 评论 -
数组--8-数组逆序对
题目 在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对。输入一个数组,求出这个数组中的逆序对的总数P。并将P对1000000007取模的结果输出。 即输出P%1000000007。输入描述: 题目保证输入的数组中没有的相同的数字 数据范围: 对于%50的数据,size<=10^4 ...原创 2018-07-17 14:44:53 · 132 阅读 · 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 · 157 阅读 · 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 · 122 阅读 · 0 评论 -
数组--7-把数组排成最小的数
题目输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323。思路遇到这个题,全排列当然可以做,但是时间复杂度为O(n!)。在这里我们自己定义一个规则,对拼接后的字符串进行比较。排序规则如下:若ab > ba 则 a 大于 b, 若ab < ba ...转载 2018-07-05 20:37:12 · 134 阅读 · 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 · 101 阅读 · 0 评论 -
数组--3-整数组顺序使奇数位于偶数前面
题目:输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。思路1、相对位置不变 可以申请空间 创建双向队列,遍历数组,奇数前插入,偶数后插入。 最后使用assign方法实现不同容器...原创 2018-07-03 16:19:28 · 134 阅读 · 0 评论 -
数组--2-旋转数组的最小数字
题目把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。 输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素。 例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。 NOTE:给出的所有元素都大于0,若数组大小为0,请返回0。思路旋转之后的数组实际上可以划分为两个排序的字数组,而且前面的字数组的元素大于或者等于后面字数组的元...原创 2018-07-03 11:36:35 · 101 阅读 · 0 评论 -
数组--11-中位数
题目: 如何得到一个数据流中的中位数?如果从数据流中读出奇数个数值,那么中位数就是所有数值排序之后位于中间的数值。如果从数据流中读出偶数个数值,那么中位数就是所有数值排序之后中间两个数的平均值。思路:用大顶堆实现左边的的数据容器,小顶堆实现右边的数据容器。有一点需要注意,我们要保证数据被平均分配到两个堆中,因此两堆大小之差不能超过1。实现方法是数据流中奇数位的数插入小顶堆中,偶...转载 2018-07-18 15:23:18 · 218 阅读 · 0 评论