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

开发一个app价格北京做网站优化的科技公司

开发一个app价格,北京做网站优化的科技公司,网架加工安装,古德设计网gooood官网2024/5/24 Day38 greedy 435. 无重叠区间 763.划分字母区间 56. 合并区间 遇到两个维度权衡的时候,一定要先确定一个维度,再确定另一个维度。如果两个维度一起考虑一定会顾此失彼。 重叠区间问题 435. 无重叠区间 题目链接 435 给定一个区间的集合 i…

2024/5/24 Day38 greedy 435. 无重叠区间 763.划分字母区间 56. 合并区间

遇到两个维度权衡的时候,一定要先确定一个维度,再确定另一个维度。如果两个维度一起考虑一定会顾此失彼。

重叠区间问题

435. 无重叠区间

题目链接 435
给定一个区间的集合 intervals ,其中 intervals[i] = [starti, endi] 。返回 需要移除区间的最小数量,使剩余区间互不重叠 。

提交

注意这里是两边都开的括号不重叠

class Solution {
public:class cmp {public:cmp(){}bool operator()(const vector<int>& a, const vector<int>& b) {return a[0] < b[0];}};int eraseOverlapIntervals(vector<vector<int>>& intervals) {sort(intervals.begin(), intervals.end(), cmp());int arrow = intervals[0][1];int cnt = 1;for (vector<int> interval : intervals) {if (interval[0] >= arrow) {cnt ++;arrow = interval[1];} else {arrow = min (arrow, interval[1]);}}return intervals.size() - cnt;}
};

763.划分字母区间

题目链接 763
给你一个字符串 s 。我们要把这个字符串划分为尽可能多的片段,同一字母最多出现在一个片段中。

注意,划分结果需要满足:将所有划分结果按顺序连接,得到的字符串仍然是 s 。

返回一个表示每个字符串片段的长度的列表。

第一次提交

未知化为已知, 遍历一遍字符串可以得到一个字母的起始位置和终止位置,之后可以转化成类似区间去重

时间效率意外还很不错。

class Solution {
public:static bool cmp (const pair<int, int>& a, const pair<int, int>& b) {return a.first < b.first;}vector<int> partitionLabels(string s) {unordered_map<char, pair<int, int> > map;for (int i = 0; i < s.size(); i++) {char c = s[i];if (map.count(c)) {map[c].second = i;} else {pair<int, int> temp;temp.first = i;temp.second = i;map[c] = temp;}}vector<pair<int, int> > container;for (unordered_map<char, pair<int, int> > :: iterator  it = map.begin(); it != map.end(); it++) {container.push_back(it->second);}sort(container.begin(), container.end(), cmp);int arrow = container[0].second;int start = 0;vector<int> res;container.push_back(make_pair(s.size(), s.size()));for (pair<int, int> p : container) {if (p.first > arrow) {if (res.size() == 0) {res.push_back(p.first);start = p.first;}else {res.push_back(p.first - start);start = p.first;}arrow = p.second;} else {arrow = max (arrow, p.second);}}return res;}
};

学习题解

随想录

并不需要记录起始位置
可以分为如下两步:

  1. 统计每一个字符最后出现的位置

  2. 从头遍历字符,并更新字符的最远出现下标,如果找到字符最远出现位置下标和当前下标相等了,则找到了分割点

用数组要比用unordered_map快

class Solution {
public:vector<int> partitionLabels(string s) {int hash[26] = {0};for (int i = 0; i < s.size(); i++) {hash[s[i] - 'a'] = i;}int right = 0;int left = 0;vector<int> res;for (int i = 0; i < s.size(); i++) {right = max(right, hash[s[i] - 'a']);if (right == i) {res.push_back(right + 1 - left);left = right + 1;}}return res;}
};

56. 合并区间

题目链接 56 以数组 intervals 表示若干个区间的集合,其中单个区间为 intervals[i] = [starti, endi] 。请你合并所有重叠的区间,并返回 一个不重叠的区间数组,该数组需恰好覆盖输入中的所有区间 。

第一次提交

和划分字母区间中我的第一次做法很像

class Solution {
public:static bool cmp(const vector<int>& a, const vector<int>& b) {return a[0] < b[0];}vector<vector<int>> merge(vector<vector<int>>& intervals) {sort(intervals.begin(), intervals.end(), cmp);int start = intervals[0][0];int end = intervals[0][1];vector<vector<int>> res;for (vector<int> interval : intervals) {if (interval[0] > end) {vector<int> temp;temp.push_back(start);temp.push_back(end);res.push_back(temp);start = interval[0];end = interval[1];} else {end = max(end, interval[1]);}}vector<int> temp;temp.push_back(start);temp.push_back(end);res.push_back(temp);return res;}
};

并没有很难

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

相关文章:

  • 红色博客网站源码多用户商城系统开发公司
  • 东莞寮步镇网站黄石网络推广公司
  • 台州椒江区热销企业网站搭建自己做电商网站
  • 外贸没有公司 如何做企业网站?一个网站能用asp c
  • 济宁网站建设培训手机app应用网站
  • 下城网站建设广州外贸建网站
  • 网站开发的趋势卸载本地wordpress
  • 网站开发项目商业计划书网站建设存在四个问题
  • wap网站制作需要多少钱学做网站教学百度网盘
  • 网站模板 修改wordpress本地网站搭建整套课程
  • 哪家做企业网站wordpress主题修改菜鸟教程
  • 做网站免费送域名织梦模板可以在wordpress用
  • 智能模板网站建设价格教育机构网站模板
  • 做律师网站公司网站运营技术性高吗
  • 合肥环保公司网站建设地方网站推广
  • 织梦素材网站模板免费下载是怎么回事儿
  • 中国建设人才服务信息网是不是假冒网站wordpress视频上传太小
  • 做网站的难点是什么网站备案信息
  • 想要做网站的企业广州seo排名外包
  • 建设网站 系统占用空间深圳建伟业公司商城
  • 全球网站排名查询网购物网站设计方案
  • 网站手机站怎么做的企业网站建设难吗
  • wordpress 友情链接小工具东莞seo计费
  • 东城做企业网站多少钱河南省建设厅八大员网站
  • 国内网站开发的主流技术哈尔滨网络公司案例
  • 做房产经纪的那些网站可以进客企业方案项目策划书怎么写
  • 网站开发慕枫丰功网站建设
  • 私人定制平台网站网站开发 资质
  • 兴义之窗网站怎么做无锡软件开发培训机构
  • 想学做网站图库