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

怎么申请建立个人免费网站线下推广团队

怎么申请建立个人免费网站,线下推广团队,用rp怎么做网站按钮下拉框,ueditor编辑器wordpressJAVA代码编写 435. 无重叠区间 给定一个区间的集合 intervals ,其中 intervals[i] [starti, endi] 。返回 需要移除区间的最小数量,使剩余区间互不重叠 。 示例 1: 输入: intervals [[1,2],[2,3],[3,4],[1,3]] 输出: 1 解释: 移除 [1,3] 后&#x…

JAVA代码编写

435. 无重叠区间

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

示例 1:

输入: intervals = [[1,2],[2,3],[3,4],[1,3]]
输出: 1
解释: 移除 [1,3] 后,剩下的区间没有重叠。

示例 2:

输入: intervals = [ [1,2], [1,2], [1,2] ]
输出: 2
解释: 你需要移除两个 [1,2] 来使剩下的区间没有重叠。

示例 3:

输入: intervals = [ [1,2], [2,3] ]
输出: 0
解释: 你不需要移除任何区间,因为它们已经是无重叠的了。

提示:

  • 1 <= intervals.length <= 105
  • intervals[i].length == 2
  • -5 * 104 <= starti < endi <= 5 * 104

教程:https://programmercarl.com/0435.%E6%97%A0%E9%87%8D%E5%8F%A0%E5%8C%BA%E9%97%B4.html

方法一:贪心

思路:和452. 用最少数量的箭引爆气球这一题很像,就是返回值不一样。

看看这个例子intervals = [[1,2],[2,3],[3,4],[1,3]]

步骤:

  1. 排序后是:intervals = [[1,2],[1,3],[2,3],[3,4]]
  2. 默认count是1(默认整个都是相交的),遍历intervals ,如果上一个区间的右边界 大于 下一个区间的左边界,也就是上一个区间和下一个区间有交集,那就将这个两个中较小的值赋给当前区间的右边界;否则count++。
  3. 最后返回intervals .length - count

在这里插入图片描述

复杂度分析

  • 时间复杂度:O(nlogn)
  • 空间复杂度:O(n)
import java.util.Arrays;class Solution {public int eraseOverlapIntervals(int[][] intervals) {// 排序方法1// Arrays.sort(intervals, (a, b) -> Integer.compare(a[0], b[0]));// 排序方法2Arrays.sort(intervals,(a,b)->a[0]-b[0]); // (a, b) 是传递给比较函数的两个参数,即数组中的两个元素。a[0] - b[0] 实际上是计算两个数组元素第一列值的差,如果结果为负数,则 a 应该排在 b 的前面;如果结果为正数,则 a 应该排在 b 的后面。int count = 1;for(int i = 1;i < intervals.length;i++){if(intervals[i][0] < intervals[i-1][1]){intervals[i][1] = Math.min(intervals[i - 1][1], intervals[i][1]);continue;}else{count++;}}return intervals.length - count;}public static void main(String[] args) {int[][] intervals ={{1,2},{2,3},{3,4},{1,3}};Solution solution = new Solution();solution.eraseOverlapIntervals(intervals);}
}

763.划分字母区间

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

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

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

示例 1:

输入:s = "ababcbacadefegdehijhklij"
输出:[9,7,8]
解释:
划分结果为 "ababcbaca"、"defegde"、"hijhklij" 。
每个字母最多出现在一个片段中。
像 "ababcbacadefegde", "hijhklij" 这样的划分是错误的,因为划分的片段数较少。 

示例 2:

输入:s = "eccbbbbdec"
输出:[10]

提示:

  • 1 <= s.length <= 500
  • s 仅由小写英文字母组成

教程:

https://programmercarl.com/0763.%E5%88%92%E5%88%86%E5%AD%97%E6%AF%8D%E5%8C%BA%E9%97%B4.html

方法一:贪心

思路:题目有点难懂,

  • 字符串划分为尽可能多的片段,也就是划分后的数组个数尽可能多。
  • 同一字母最多出现在一个片段中,也就是相同字母要放在一起。也可以理解为划分后的没有交集。

s = "ababcbacadefegdehijhklij"为例

步骤:

  1. 通过字母-‘a’获取索引,存入数组edge中。此时,edge = [8, 5, 7, 14, 15, 11, 13, 19, 22, 23, 20, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]。具体来说,edge[0]表示字母a最后一次出现的索引。0表示没有出现这个字母。
  2. 遍历chars数组,每次要划分的索引,是max(idx,edge[char[i]-‘a’]),知道索引==idx,就是找到了切割的点,这个条件还挺难找的。
  3. 通过当前的索引-last获取切分的长度
    在这里插入图片描述

复杂度分析

  • 时间复杂度:O(n)
  • 空间复杂度:O(n)
import java.util.LinkedList;
import java.util.List;class Solution {public List<Integer> partitionLabels(String S) {List<Integer> list = new LinkedList<>();int[] edge = new int[26]; //char[] chars = S.toCharArray(); // 转为数组for (int i = 0; i < chars.length; i++) {edge[chars[i] - 'a'] = i; // 存放字母a-z在数组chars中最后出现的位置,也就是最后出现的索引}int idx = 0;int last = -1;for (int i = 0; i < chars.length; i++) {idx = Math.max(idx,edge[chars[i] - 'a']);if (i == idx) {list.add(i - last);last = i;}}return list;}public static void main(String[] args) {Solution solution = new Solution();solution.partitionLabels("ababcbacadefegdehijhklij");}
}

56. 合并区间

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

示例 1:

输入:intervals = [[1,3],[2,6],[8,10],[15,18]]
输出:[[1,6],[8,10],[15,18]]
解释:区间 [1,3] 和 [2,6] 重叠, 将它们合并为 [1,6].

示例 2:

输入:intervals = [[1,4],[4,5]]
输出:[[1,5]]
解释:区间 [1,4] 和 [4,5] 可被视为重叠区间。

提示:

  • 1 <= intervals.length <= 104
  • intervals[i].length == 2
  • 0 <= starti <= endi <= 104

教程:https://programmercarl.com/0056.%E5%90%88%E5%B9%B6%E5%8C%BA%E9%97%B4.html

方法一:贪心

思路

intervals = [[1,3],[2,6],[8,10],[15,18]]为例子

步骤

  1. 排序后:intervals = [[1,3],[2,6],[8,10],[15,18]]
  2. 遍历intervals ,如果左边界大于最大右边界,就添加到结果中,此时没有交集,直接加入结果,更新左边界和右边界;否则,合并和的区间就是[上一个区间的左边界,下一个区间的右边界],更新右边界
  3. 遍历完还要添加到结果

细节方面不是很懂,更新边界值那里。

复杂度分析

  • 时间复杂度:O(nlogn)
  • 空间复杂度:O(logn)
import java.util.Arrays;
import java.util.LinkedList;
import java.util.List;class Solution {public int[][] merge(int[][] intervals) {List<int[]> res = new LinkedList<>();//按照左边界排序Arrays.sort(intervals, (x, y) -> Integer.compare(x[0], y[0]));//initial start 是最小左边界int start = intervals[0][0];int rightmostRightBound = intervals[0][1];for (int i = 1; i < intervals.length; i++) {//如果左边界大于最大右边界if (intervals[i][0] > rightmostRightBound) {//加入区间 并且更新startres.add(new int[]{start, rightmostRightBound});start = intervals[i][0];rightmostRightBound = intervals[i][1];} else {//更新最大右边界rightmostRightBound = Math.max(rightmostRightBound, intervals[i][1]);}}res.add(new int[]{start, rightmostRightBound});return res.toArray(new int[res.size()][]);}public static void main(String[] args) {Solution solution = new Solution();solution.merge(new int[][] {{1,3},{2,6},{8,10},{15,18}});}
}
http://www.ds6.com.cn/news/95152.html

相关文章:

  • lookae素材网揭阳新站seo方案
  • 数据库支持的网站怎么做影视后期培训机构全国排名
  • 公司做网站需要提供什么条件十大网络舆情案例
  • 企业营销网站开发建设专家武汉软件测试培训机构排名
  • 佛山网站设计中心b2b电商平台
  • 长春企业网站排名优化北京疫情最新情况
  • 可以做任务的创意设计网站百度竞价优化
  • 成都装修网站制作多少钱seo是什么意思?
  • 做网站建设的名声很差吗长沙网站推广服务公司
  • 网站建设哪家不错人工智能培训班收费标准
  • 常平营销网站建设新乡网络推广外包
  • 注册公司一般流程seo简单优化
  • 好的网站建设公司刷僵尸粉网站推广
  • 密云区免费网站建设谷歌网页版登录入口
  • 网站架设镇江seo快速排名
  • 男女性做那个微视频网站成品影视app开发
  • 做网站接私活流程电商营销推广方案
  • 做网站和谷歌推广一共多少钱友情链接检测工具
  • 一次备案多个网站南通seo网站优化软件
  • 网站做用户记录表引擎优化seo
  • 页面设计排版优化seo是什么
  • 联客易外贸网站建设推广谷歌浏览器网页版入口手机版
  • 游戏打金工作室加盟广东seo教程
  • 镇海建设银行网站今日头条郑州头条新闻
  • asp网站怎么做友情链接交换的方法
  • 担路网做网站多少钱小红书关键词优化
  • 做网站前期费用网站优化方案案例
  • 怎样能注册自己的网站百度百家号怎么赚钱
  • 公司建网站有免费的吗sem工作原理
  • 做学校网站素材成都百度seo优化公司