2022-08-20:给定区间的范围[xi,yi],xi<=yi,且都是正整数,
找出一个坐标集合set,set中有若干个数字,
set要和每个给定的区间,有交集。
求set的最少需要几个数。
比如给定区间 : [5, 8] [1, 7] [2, 4] [1, 9],
set最小可以是: {2, 6}或者{2, 5}或者{4, 5}。

答案2022-08-20:

生成事件,排序,遍历事件获得结果。

代码用rust编写。代码如下:

use std::collections::HashSet;
fn main() {
let mut arr: Vec<Vec<i32>> = vec![vec![5, 8], vec![1, 7], vec![2, 4], vec![1, 9]];
let ans1 = min_set(&mut arr);
println!("ans1 = {}", ans1);
} fn min_set(ranges: &mut Vec<Vec<i32>>) -> i32 {
let n = ranges.len() as i32;
// events[i] = {a, b, c}
// a == 0, 表示这是一个区间的开始事件,这个区间结束位置是b
// a == 1, 表示这是一个区间的结束事件,b的值没有意义
// c表示这个事件的时间点,不管是开始事件还是结束事件,都会有c这个值
let mut events: Vec<Vec<i32>> = vec![];
for i in 0..n << 1 {
events.push(vec![]);
for _ in 0..3 {
events[i as usize].push(0);
}
}
for i in 0..n {
// [3, 7]
// (0,7,3)
// (1,X,7)
events[i as usize][0] = 0;
events[i as usize][1] = ranges[i as usize][1];
events[i as usize][2] = ranges[i as usize][0];
events[(i + n) as usize][0] = 1;
events[(i + n) as usize][2] = ranges[i as usize][1];
}
events.sort_by(|a, b| a[2].cmp(&b[2]));
// 容器
let mut tmp: HashSet<i32> = HashSet::new();
let mut ans = 0;
for event in events.iter() {
if event[0] == 0 {
tmp.insert(event[1]);
} else {
if tmp.contains(&event[2]) {
ans += 1;
tmp.clear();
}
}
}
return ans;
}

执行结果如下:


左神java代码

2022-08-20:给定区间的范围[xi,yi],xi<=yi,且都是正整数, 找出一个坐标集合set,set中有若干个数字, set要和每个给定的区间,有交集。 求set的最少需要几个数。 比如给的更多相关文章

  1. 平面上给定n条线段,找出一个点,使这个点到这n条线段的距离和最小。

    题目:平面上给定n条线段,找出一个点,使这个点到这n条线段的距离和最小. 源码如下: #include <iostream> #include <string.h> #incl ...

  2. C语言:找出一个大于给定整数m且紧随m的素数,-求出能整除x且不是偶数的数的个数,

    //函数fun功能:找出一个大于给定整数m且紧随m的素数,并作为函数值返回. #include <stdlib.h> #include <conio.h> #include & ...

  3. 给定一个整数N,找出一个比N大且最接近N,但二进制权值与该整数相同 的数

    1,问题描述 给定一个整数N,该整数的二进制权值定义如下:将该整数N转化成二进制表示法,其中 1 的个数即为它的二进制权值. 比如:十进制数1717 的二进制表示为:0000 0110 1011 01 ...

  4. 输入一个数字n 如果n为偶数则除以2,若为奇数则加1或者减1,直到n为1,求最少次数 写出一个函数

    题目: 输入一个数字n  如果n为偶数则除以2,若为奇数则加1或者减1,直到n为1,求最少次数  写出一个函数 首先,这道题肯定可以用动态规划来解, n为整数时,n的解为 n/2 的解加1 n为奇数时 ...

  5. 2022.02.20 SA

    2022.02.20 SA 如果我还能看见明天黎明,如果我还能再爬起来,我仍会走我的路,哪怕这条路已经荒废许久,也许我们无法拥有感情,我们甚至无法像个正常人一样接受太阳的洗礼,但是我依然会执行我的条约 ...

  6. http://www.cnblogs.com/jqyp/archive/2010/08/20/1805041.html

    http://www.cnblogs.com/jqyp/archive/2010/08/20/1805041.html

  7. 找出区间[A, B]内所有数字的奇数字位出现次数为偶数,偶数字位出现次数为计数的数的个数。(数位DP)

    题目:找出区间[A, B]内所有数字的奇数字位出现次数为偶数,偶数字位出现次数为计数的数的个数. 分析:这道题的状态同样不好取,因为要求每一个奇数的个数都要为偶数,每一个偶数的位数都要为奇数,又因为只 ...

  8. VB6查看桌面分辨率和工作区大小 2022.08.22 name.vt

    VB6查看桌面分辨率和工作区大小 2022.08.22 name.vt Form1 内代码如下: ' 2022年8月22日 15时15分 ' 作者:name.vt Private Sub cmdCle ...

  9. 求N!末尾的0的个数(找规律+递归)

    0\'s Time Limit: 1000ms   Memory limit: 65536K  有疑问?点这里^_^ 题目描写叙述 计算整数n!(n的阶乘)末尾有多少个0. 输入 第一行输入一个数T代 ...

  10. [LeetCode] 871. Minimum Number of Refueling Stops 最少的加油站个数

    A car travels from a starting position to a destination which is target miles east of the starting p ...

随机推荐

  1. luffy项目settings

    一:  二:. 设置调整 1.修改manage.py配置路径 os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'luffyApi.settings.de ...

  2. 给c++写python的split()与input()【python一样写c++、一】

    python的split确实是很香的功能. 写c++的时候,就会想着,要是能直接input().split()那不挺好. 实际上真的可以:自己动手,丰衣足食. 先放成品展示. int main(){ ...

  3. IDEA如何使用Maven不通过模板创建javaWeb项目

    IDEA如何使用Maven不通过模板创建javaWeb项目 1.创建项目 进入IDEA,点击"项目">"新建项目",填写项目信息,最后点击"创建 ...

  4. Blazor项目在VisualStudio调试时配置运行基础目录

    最近在使用 Blazor 开发管理后台时遇到了如下的问题,我这里后台整体采用了 AntDesignBlazor 组件库,在上线之后发现ReuseTabs组件在使用过程中,如果默认 / 没有指定为项目的 ...

  5. Redis中 HyperLogLog数据类型使用总结

    转载请注明出处: 目录 1. HyperLogLog 的原理 2.使用步骤 3.实现请求ip去重的浏览量使用示例 4.Jedis客户端使用 5.Redission使用依赖 6.HyperLogLog ...

  6. 写Java程序有感

    最近我练习了Java的学生管理系统的程序代码,多亏了前段时间小学期的系统类练习,让我比较容易地就能够理解该题的题意,再根据我学到的相关的Java知识,就好像是一个套用公式的逻辑. 用到的相关知识: 1 ...

  7. 操作系统 && C语言 每日学习记录(day1 ~ day8) 已寄

    现在正式工作了,发现之前学的东西,很多一知半解,不通透,准备再好好系统学一些计算机原理的东西,每天学一学,在这里记录一下. 规划(7.17开始): 同学分享了个超级好的操作系统课程,每天看个一节:ht ...

  8. Python 爬虫入门(一)环境搭建

    一.梳理图 Python是个啥.为啥学习.作用域,随便查一下什么信息都有 本人目前是Java开发,在学习爬虫时发现在爬虫方面,Python比Java简单.方便.实用很多,不是不能做,只是单纯的适合 在 ...

  9. 千亿参数开源大模型 BLOOM 背后的技术

    假设你现在有了数据,也搞到了预算,一切就绪,准备开始训练一个大模型,一显身手了,"一朝看尽长安花"似乎近在眼前 -- 且慢!训练可不仅仅像这两个字的发音那么简单,看看 BLOOM ...

  10. 001-ksum 求符合条件的 k 个数 1. Two Sum/15. 3Sum/18. 4Sum/

    推荐阅读 000-从零开始的数据结构与算法 001-01-ksum 求符合条件的 k 个数 1. Two Sum/15. 3Sum/18. 4Sum/ 002-两数相加 add two numbers ...