当前位置: 首页 > news >正文

手机网站专题页深圳 骏域网站建设

手机网站专题页,深圳 骏域网站建设,搜索引擎优化自然排名,济南教育论坛网站建设题目描述 https://leetcode.cn/problems/longest-consecutive-sequence/description/?envTypestudy-plan-v2&envIdtop-100-liked 给定一个未排序的整数数组 nums ,找出数字连续的最长序列(不要求序列元素在原数组中连续)的长度。 请你…

题目描述

https://leetcode.cn/problems/longest-consecutive-sequence/description/?envType=study-plan-v2&envId=top-100-liked

给定一个未排序的整数数组 nums ,找出数字连续的最长序列(不要求序列元素在原数组中连续)的长度。

请你设计并实现时间复杂度为 O(n) 的算法解决此问题。

示例 1:

输入:nums = [100,4,200,1,3,2]
输出:4
解释:最长数字连续序列是 [1, 2, 3, 4]。它的长度为 4。
示例 2:

输入:nums = [0,3,7,2,5,8,4,6,0,1]
输出:9

我的答案

class Solution {
public:int longestConsecutive(vector<int>& nums) {if (0==nums.size()){return 0;}std::sort(nums.begin(),nums.end());// for (auto it=nums.begin();it!=nums.end();it++)// {//     std::cout<<*it<<std::endl;// }int max_result=1;int max_result_temp=1;for(int i=nums.size()-1;i>0;--i){// std::cout<<"i="<<i<<std::endl;// std::cout<<"nums[i]="<<nums[i]<<std::endl;// std::cout<<"nums[i-1]="<<nums[i-1]<<std::endl;if(1==(nums[i]-nums[i-1])){max_result_temp++;//std::cout<<"max_result_temp="<<max_result_temp<<std::endl;if (max_result_temp>max_result){max_result=max_result_temp;}}else if(0==(nums[i]-nums[i-1])){max_result_temp;//std::cout<<"max_result_temp="<<max_result_temp<<std::endl;if (max_result_temp>max_result){max_result=max_result_temp;}}else{// is_consecutive=false;max_result_temp=1;}}return max_result;}
};
#include <iostream>
#include <vector>
#include <algorithm>
#include <iostream>
#include <unordered_map>
#include <string>class Solution
{
public:int longestConsecutive(std::vector<int> &nums){if (0 == nums.size()){return 0;}std::sort(nums.begin(), nums.end());// for (auto it=nums.begin();it!=nums.end();it++)// {//     std::cout<<*it<<std::endl;// }int max_result = 1;int max_result_temp = 1;for (int i = nums.size() - 1; i > 0; --i){// std::cout<<"i="<<i<<std::endl;// std::cout<<"nums[i]="<<nums[i]<<std::endl;// std::cout<<"nums[i-1]="<<nums[i-1]<<std::endl;if (1 == (nums[i] - nums[i - 1])){max_result_temp++;// std::cout<<"max_result_temp="<<max_result_temp<<std::endl;if (max_result_temp > max_result){max_result = max_result_temp;}}else if (0 == (nums[i] - nums[i - 1])){max_result_temp;// std::cout<<"max_result_temp="<<max_result_temp<<std::endl;if (max_result_temp > max_result){max_result = max_result_temp;}}else{// is_consecutive=false;max_result_temp = 1;}}return max_result;}
};int main()
{std::vector<int> nums = {100, 4, 200, 1, 3, 2};int result;Solution test1;result = test1.longestConsecutive(nums);std::cout << "result=" << result << std::endl;std::cout << "     " << std::endl;return 0;
}

编译:

g++ 128_最长连续序列.cpp -o main

输出

4

解题思路

先排序,然后倒着循环作差,值为1,则累加,不然重新开始累加,记住要记住最大值,且需要考虑多种边界情况,比如一个数据,没有数据,重复数据等。特别是重复数据。

注意: 后面我会学习排序后去重的C++库函数

知识点

sort库函数使用

这里需要包含头文件

#include <algorithm>

不然找不到头文件
在 C++ 中,你可以使用 头文件中的库函数来进行排序。以下是一些常用的排序函数:

std::sort():对容器或指定范围内的元素进行排序,默认按升序排序。注意:std::sort(),不光能对数字进行排序,还可以对字母进行排序。

#include <algorithm>
#include <vector>int main() {std::vector<int> nums = {5, 2, 8, 1, 9};std::sort(nums.begin(), nums.end());// 输出排序后的结果for (const auto& num : nums) {std::cout << num << " ";}return 0;
}

输出结果:1 2 5 8 9

注意输入为0判断,边界条件判断

输入数组长度为0:

 if (0 == nums.size()){return 0;}

其他优化解题

使用哈希表

http://www.yayakq.cn/news/270695/

相关文章:

  • 广州免费制作网站软件做外贸的女生干净吗
  • 网站建设框架注意事项景观规划设计公司
  • 石家庄网站建设套网盘做电子书下载网站
  • 站长工具seo域名解析不了做seo营销网站
  • 建设厅网站上企业登录购物网站建设开发费用分析
  • 网站建设培训心得网站建设php心得体会
  • 做黄金理财的网站wordpress 空白框架
  • 对亚马逊网站做简要分析与评价怎么制作游戏修改器
  • 有哪些外贸网站深圳地铁公司官网
  • 网站模板库阿里云怎么创建网站
  • 网站后台建设佛山手机网站建设
  • 成都制作网站公司软件开发工程师胜任力模型
  • 男女在床上做暖暖插孔网站上海专业做网站公
  • 外包给网站建设注意事项网站建设销售客户开发
  • 校园网站建设背景做后期的网站
  • 外贸英语 网站优化英文
  • 敦化市住房和城乡建设局网站做网站营销公司有哪些
  • 百度经验官网入口seo推广多少钱
  • 网站维护目标html5网页设计实训总结
  • 卖主机网站免费电子版个人简历模板
  • 广州会议室租用关键词优化排名易下拉效率
  • 创建一个网站需要什么四川成都私人网站建设
  • 营销型网站建设实战》北京档案馆网站建设
  • 网站推广的方式?php快速开发平台
  • 有趣的个人网站广州网站建设菲利宾
  • 网站建设客户分析调查表群辉nas 做网站
  • 北京移动网站建设公司南京cms建站系统
  • 基于php mysql的网站开发光谷软件园企业网站建设公司
  • 一个页面对网站如何建设有ip怎么用自己的主机做网站
  • 楚雄市网站建设公司网站如果不备案吗