求一个乱序数组的元素最大连续长度
2017-05-25 22:30
316 查看
/******************************************************************************** **description:一个乱序数组的元素最大连续长度,如a[5]={100,4,3,200,5},返回3 ** 要求总的时间复杂度为O(n) *********************************************************************************/ //用一个哈希表记录每个元素是否被统计过,对每个元素,以自己为中心,左右扩张,直到不连续为止,记录最大长度 //时间复杂度O(n),空间复杂度O(n) #include <iostream> #include<vector> #include<unordered_map> using namespace std; int longestConsecutive(const vector<int> &arr) { unordered_map<int, bool> used; for (int i = 0; i < arr.size(); i++) { used[arr[i]] = false; } int longest = 0; for (int i = 0; i < arr.size(); i++) { if (used[arr[i]] == true) continue; int length = 1; for (int j = arr[i] + 1; used.find(j) != used.end(); j++) { used[j] = true; length++; } for (int j = arr[i] - 1; used.find(j) != used.end(); j--) { used[j] = true; length++; } if (longest < length) longest = length; } return longest; }
相关文章推荐
- 风口之下,猪都能飞。当今中国股市牛市,真可谓“错过等七年”。 给你一个回顾历史的机会,已知一支股票连续n天的价格走势,以长度为n的整数数组表示,数组中第i个元素(prices[i])代表该股票第i天的股价。 假设你一开始没有股票,但有至多两次买入1股而后卖出1股的机会,并且买入前一定要先保证手上没有股票。若两次交易机会都放弃,收益为0。 设计算法,计算你能获得的最大收益。 输入数值范围:2<=n<
- 输入一个数组长度,动态创建数组,所有元素随机生成,输出元素中的最大值
- 1.输入一个数组长度,动态创建数组,所有元素随机生成,输出元素中的最大值;
- 算法题:找出一个数组中相加值最大的连续序列元素
- 要求一个数组连续下标和的最大值,数组的元素可正、可负、可为零
- 计算一个整形数组里的连续元素和的最大值
- 给定一个数组input[] ,如果数组长度n为奇数,则将数组中最大的元素放到 output[] 数组 最中间的位置,如果数组长度n为偶数,则将数组中最大的元素放到 output[] 数组中间两个位置偏右的那个位置上
- 风口之下,猪都能飞。当今中国股市牛市,真可谓“错过等七年”。 给你一个回顾历史的机会,已知一支股票连续n天的价格走势,以长度为n的整数数组表示,数组中第i个元素(prices[i])代表该股票第i天
- java__给定一个非负整数数组,假定你的初始位置为数组第一个下标。 数组中的每个元素代表你在那个位置能够跳跃的最大长度。 请确认你是否能够跳跃到数组的最后一个下标。
- 输入一个数组长度,动态创建数组,所有元素随机生成,输出元素中的最大值
- 华为:给定一个数组input[],如果数组长度n为奇数,则将数组中最大的元素放到 output[]数组最中间的位置,如果数组长度n为偶数。。 .
- 1,随机一个数组长度,动态创建数组,所有元素随机生成,输出元素中的最大值
- 给定一个非负整数数组,最初定位在数组的第一个索引处。组中的每个元素表示您在该位置的最大跳跃长度。求最小跳数
- 设一个长度为10的整型数组, 0)要求每个元素的值通过scanf输入,输入完成后, 1)请顺序输出这些整数, 2)请倒序输出这些整数, 3)输出这些数中的最大值, 4)输出这些数中的最小值
- 输入一个数组长度,动态创建数组,所有元素随机生成,输出元素中的最大值
- 求解一个数组中连续元素最大值
- // 1、输入一个数组长度,动态创建数组,所有元素随机生成,输出元素中的最大值
- 给一个数组,元素都是整数(有正数也有负数),寻找连续的元素相加之和为最大的序列。
- JAVA :在给定一个数组中,可以取得多个连续的子串。在众多子串中,求各元素和为最大值的连续子串!
- 获取一个数组中最长的连续的元素序列。例如,给定了[31,6,32,1,3,2],最长的连续的元素序列是[1,2,3],返回其长度3