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

乐峰网网站是谁做的百度云搜索引擎入口手机版

乐峰网网站是谁做的,百度云搜索引擎入口手机版,酒店网站建设目标,房管网查询中心题目 给定一个 无重复元素 的 有序 整数数组 nums 。 返回 恰好覆盖数组中所有数字 的 最小有序 区间范围列表 。也就是说,nums 的每个元素都恰好被某个区间范围所覆盖,并且不存在属于某个范围但不属于 nums 的数字 x 。 列表中的每个区间范围 [a,b]…

题目

给定一个  无重复元素 的 有序 整数数组 nums 。

返回 恰好覆盖数组中所有数字 的 最小有序 区间范围列表 。也就是说,nums 的每个元素都恰好被某个区间范围所覆盖,并且不存在属于某个范围但不属于 nums 的数字 x 。

列表中的每个区间范围 [a,b] 应该按如下格式输出:

  • "a->b" ,如果 a != b
  • "a" ,如果 a == b

示例 1:

输入:nums = [0,1,2,4,5,7]
输出:["0->2","4->5","7"]
解释:区间范围是:
[0,2] --> "0->2"
[4,5] --> "4->5"
[7,7] --> "7"

示例 2:

输入:nums = [0,2,3,4,6,8,9]
输出:["0","2->4","6","8->9"]
解释:区间范围是:
[0,0] --> "0"
[2,4] --> "2->4"
[6,6] --> "6"
[8,9] --> "8->9"

自己的思路:

也是双指针,但是在边界情况不知道如何处理。

就是怎么可以避免fast == len的时候,再让它减1,

class Solution {
public:vector<string> summaryRanges(vector<int>& nums) {vector<string> vs;map<int, int> mp;int low = 0, fast = 0;int len = nums.size();while(low != len){fast++;if((fast == len) || (nums[fast] != nums[low] + fast - low)){mp[nums[low]] = nums[fast - 1];low = fast;} }for(map<int, int>::iterator it = mp.begin(); it!= mp.end(); it++){string str;if(it->first == it->second){str = to_string(it->first);}else {str = to_string(it->first) + "->" + to_string(it->second);}vs.push_back(str);}return vs;}
};

看了题解之后的做法:

思路:

双指针。从前往后遍历,low在前,high在后跑,如果high跑着发现它跟前面那个值相差不为1,说明这个区间在这里断了。就需要把这个区间存储起来,然后low更新为现在的high继续跑。直到跑到len为止。

这里使用 map 来存储区间,键key存区间开始,值value存区间终点。最后在输出的时候,判断键值是否相等,如果相等,就输出该值自己,如果不相等,就输出该区间。

代码:

class Solution {
public:vector<string> summaryRanges(vector<int>& nums) {vector<string> vs;map<int, int> mp;int low = 0, high = 0;int len = nums.size();int i = 0;while (i < len) {low = i;i++;while (i < len && nums[i] == nums[i - 1] + 1) { // 注意点1i++;}high = i - 1;mp[nums[low]] = nums[high];}for(map<int, int>::iterator it = mp.begin(); it!= mp.end(); it++){string str;if(it->first == it->second){str = to_string(it->first);}else {str = to_string(it->first) + "->" + to_string(it->second);}vs.push_back(str);}return vs;}
};

需要注意的点:

1.在判断区间断点时,如果用 nums[i]-nums[i-1] == 1 来判断的话,会发生如下情况:

原因分析:

因为int型可以表示的范围是:-2147483648 ~ 2147483647。

这里 2147483647- (-2147483647) 肯定就溢出了= =

http://www.zhongyajixie.com/news/55419.html

相关文章:

  • 网站怎么做seo快速seo排名优化
  • 陕西外贸英文网站建设最新新闻热点事件2023
  • wordpress资源网源码奉化网站关键词优化费用
  • 中国国家城乡建设委员会网站网站建设明细报价表
  • 网站首页设计图seo实战优化
  • 做门户网站maosi深圳百度推广代理
  • 网站上传小马后怎么做seo搜索优化工程师招聘
  • wordpress增加背景图片安徽网络优化公司
  • 什么网站可以做网站怎么去推广自己的店铺
  • wordpress重新发布windows优化大师官方网站
  • 党建网站信息化建设实施方案武汉网站设计公司
  • 简单电子商务网站建设专业的郑州网站推广
  • 公司网站建设模板下载网络营销学校
  • 濮阳做网站的公司站长工具在线平台
  • 简洁大气网站模板seo快排软件
  • dz如何做门户网站关键词排名推广方法
  • 网站建设 版权归属营销方式都有哪些
  • 甘肃网站建设专家西安关键词推广
  • 搭建网站的工具怎样做关键词排名优化
  • 谷歌有趣的网站西安关键词seo
  • 做aelogo动效有什么好的网站如何在网上推广自己的产品
  • 个人网站注册费用今日国际新闻摘抄
  • 数据来源网站怎么做脚注安阳企业网站优化外包
  • 网站建设教程吧永久免费客服系统软件
  • 福州做网站营销策划思路及方案
  • 长沙今天新增疫情提升seo搜索排名
  • 河北保定网站建设针对本地的免费推广平台
  • 红酒网站制作百度关键词优化词精灵
  • 佛山新网站建设价格蒙牛牛奶推广软文
  • 佘山做网站新浪新闻疫情