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

扒网站样式中国搜索网站排名

扒网站样式,中国搜索网站排名,网站地址大全,北京网络推广公司435.无重叠区间 这题需要判断好两个点#xff1a; 1、什么时候移除元素#xff1f;#xff08;如何判断重叠#xff1f;#xff09;——当前区间左边界小于之前区间右边界时移除元素 2、移除哪个元素#xff1f;——移除右边界更靠后的元素 整体解题框架和昨天打气球…435.无重叠区间 这题需要判断好两个点 1、什么时候移除元素如何判断重叠——当前区间左边界小于之前区间右边界时移除元素 2、移除哪个元素——移除右边界更靠后的元素 整体解题框架和昨天打气球差不多也是先排序后处理好右边界 class cmp { public:bool operator()(const vectorint v1, const vectorint v2) {if (v1[0] ! v2[0])return v1[0] v2[0];elsereturn v1[1] v2[1];} };int eraseOverlapIntervals(vectorvectorint intervals) {std::sort(intervals.begin(), intervals.end(), cmp());int ans 0;int right intervals[0][1];for (int i 1; i intervals.size(); i) {if (intervals[i][0] right) {// 如果发生重叠删除右边界更大的那个无论删除哪个剩余的那个左边界都满足不重叠right std::min(right, intervals[i][1]);ans;}else {right intervals[i][1];}}return ans; } 763.划分字母区间 这题自己的思路也是将其抽象为昨天打气球类似的框架写出来虽然能AC但又抽象又繁琐不是很美丽 大致思路将每个字母都抽象为一个区间区间记录其第一次与最后一次出现的位置。之后对这些区间进行排序逐个将重叠的区间进行合并 将所有字母抽象为区间后就和后面的56合并区间几乎完全一致了仅有记录结果的方法不同 class cmp { public:bool operator()(const vectorint v1, const vectorint v2) {if (v1[0] ! v2[0])return v1[0] v2[0];elsereturn v1[1] v2[1];} };vectorint partitionLabels(string s) {// 先统计各个字母出现的左右区间将问题抽象为重叠区间问题vectorvectorint letters { 26, vectorint{-1, -1} };for (int i 0; i s.size(); i) {int ind s[i] - a;if (letters[ind][0] -1) {letters[ind][0] i 1;letters[ind][1] i 1;}else {letters[ind][1] i 1;}}// 删除没出现过的字母for (int i 0; i letters.size(); ) {if (letters[i][0] -1)letters.erase(letters.begin() i);elsei;}std::sort(letters.begin(), letters.end(), cmp());vectorint ans;int right letters[0][1];int sum 0; // sum记录之前已经完成分割的字符串长度for (int i 1; i letters.size(); i) {// 未重叠时分割字符串if (letters[i][0] right) {ans.push_back(right - sum);sum ans.back();right letters[i][1];}// 重叠时扩展当前分割的右边界else {right std::max(right, letters[i][1]);}}if(sum ! s.size())ans.push_back(s.size() - sum);return ans; } 实际上只需要统计字母出现的右边界即可 整体思路有点类似于之前的跳跃游戏II不断更新当前分割下所能到达的最远右边界当到达右边界时更新结果 vectorint partitionLabels(string s) {// 只统计每个字母的有边界int hash[27] { 0 };for (int i 0; i s.size(); i)hash[s[i] - a] i;vectorint ans;// 当前分割的左右边界int left 0;int right 0;for (int i 0; i s.size(); i) {// 不断扩张当前分割的右边界right std::max(right, hash[s[i] - a]);// 如果到达当前分割的右边界则保存当前分割结果if (i right) {ans.push_back(right - left 1);left i 1;right i 1;}}return ans; } 56.合并区间 按自己的思路写完上面的划分字母区间后再看这题甚至没看出区别 整体思路与昨天的打气球类似排序后逐个处理右边界。如果发生重叠则更新当前区间的右边界如果没重叠则记录结果。 class cmp { public:bool operator()(const vectorint v1, const vectorint v2) {if (v1[0] ! v2[0])return v1[0] v2[0];elsereturn v1[1] v2[1];} };vectorvectorint merge(vectorvectorint intervals) {std::sort(intervals.begin(), intervals.end(), cmp());vectorvectorint ans;int left intervals[0][0];int right intervals[0][1];for (int i 1; i intervals.size(); i) {// 如果重叠则后推右边界相当于进行了合并if (intervals[i][0] right)right std::max(right, intervals[i][1]);// 未重叠则记录区间else {ans.push_back({ left, right });left intervals[i][0];right intervals[i][1];}}ans.push_back({ left, right });return ans; } 理解好了昨天的打气球今天的三道题思路其实都差不多总算有几题能自己做出来了T^T
http://www.pierceye.com/news/646314/

相关文章:

  • 网站空间和云服务器建设建材网站费用
  • 公司网站 正式上线wordpress 移动端不显示
  • 旅行网站排名前十名网站检测报告哪里做
  • 随州做网站wordpress 显示评论内容
  • 网站建设时间计划表非常赚又一个wordpress站点
  • 苏州网站小程序app开发公司wordpress如何上传文件大小
  • 同仁行业网站建设报价免费ui网站
  • 网站打开速度慢wordpress开发者选项怎么打开
  • 免费网站代理访问网站 营销型
  • 甘特图模板关于网站建设永嘉移动网站建设公司
  • 网站建设服务协议书做面包有哪些网站知乎
  • 网站建设评比标准建盏茶杯知识
  • 商城网站建设教学电子商务的就业方向
  • 做网站必要性江苏华江建设集团网站
  • 网站建设丿金手指排名9如何百度搜到网站
  • 南昌商城网站建设央企网站群建设中标公告
  • 湖北建设监理协会网站网页游戏排行榜开服时间
  • 中国空间站图片竞价账户托管公司哪家好
  • 湖南省金力电力建设有限公司 网站广州市建设局官方网站
  • 比价网站源码免费域名领取
  • 温州做网站费用怎么推广自己的偏方
  • 鞍山建站wordpress侧边浮动
  • 江西网站优化临海外发加工网
  • 机械做网站好处无锡网络推广服务
  • 电信网站备案管理系统外贸网站推广的方法
  • 什么网站上公司的评价最客观需要做网站建设和推广的行业
  • 百度人工服务24小时电话四川seo技术培训
  • 邢台网站建设服务商教育网站制作软件
  • 罗湖区住房和建设局网站官网建设香帅摩托车官网
  • 网站建设一条东莞手机微信网站