给定一个非重叠轴对齐矩形的列表 rects,写一个函数 pick 随机均匀地选取矩形覆盖的空间中的整数点。

提示:

  1. 整数点是具有整数坐标的点。
  2. 矩形周边上的点包含在矩形覆盖的空间中。
  3. 第 i 个矩形 rects [i] = [x1,y1,x2,y2],其中 [x1,y1] 是左下角的整数坐标,[x2,y2] 是右上角的整数坐标。
  4. 每个矩形的长度和宽度不超过 2000。
  5. 1 <= rects.length <= 100
  6. pick 以整数坐标数组 [p_x, p_y] 的形式返回一个点。
  7. pick 最多被调用10000次。

示例 1:

输入:
["Solution","pick","pick","pick"]
[[[[1,1,5,5]]],[],[],[]]
输出:
[null,[4,1],[4,1],[3,3]]

示例 2:

输入:
["Solution","pick","pick","pick","pick","pick"]
[[[[-2,-2,-1,-1],[1,0,3,0]]],[],[],[],[],[]]
输出:
[null,[-1,-2],[2,0],[-2,-1],[3,0],[-2,-2]]

输入语法的说明:

输入是两个列表:调用的子例程及其参数。Solution 的构造函数有一个参数,即矩形数组 rectspick 没有参数。参数总是用列表包装的,即使没有也是如此。

class Solution {
public:
    Solution(vector<vector<int>> rects) {
        _rects = rects;
    }
    
    vector<int> pick() {
        int sumArea = 0;
        vector<int> selected;
        for (auto rect : _rects) {
            int area = (rect[2] - rect[0] + 1) * (rect[3] - rect[1] + 1);
            sumArea += area;
            if (rand() % sumArea < area) selected = rect;
        }
        int x = rand() % (selected[2] - selected[0] + 1) + selected[0];
        int y = rand() % (selected[3] - selected[1] + 1) + selected[1];
        return {x, y};
    }

private:
    vector<vector<int>> _rects;
};

/**
 * Your Solution object will be instantiated and called as such:
 * Solution obj = new Solution(rects);
 * vector<int> param_1 = obj.pick();
 */

497.非重叠矩形中的随机点相关推荐

  1. 【宫水三叶的刷题日记】497. 非重叠矩形中的随机点(中等)

    题目描述 这是 LeetCode 上的 497. 非重叠矩形中的随机点 ,难度为 中等. Tag : 「前缀和」.「二分」.「随机化」 给定一个由非重叠的轴对齐矩形的数组 rects,其中 表示 是第 ...

  2. LeetCode 497. 非重叠矩形中的随机点(前缀和+二分查找)

    文章目录 1. 题目 2. 解题 1. 题目 给定一个非重叠轴对齐矩形的列表 rects,写一个函数 pick 随机均匀地选取矩形覆盖的空间中的整数点. 提示: 整数点是具有整数坐标的点. 矩形周边上 ...

  3. leetcode 497, 528. Random Point in Non-overlapping Rectangles | 497. 非重叠矩形中的随机点(Java)

    497. Random Point in Non-overlapping Rectangles https://leetcode.com/problems/random-point-in-non-ov ...

  4. Java黑皮书课后题第3章:3.16(随机点)编写程序,显示矩形中一个随机点的坐标。矩形中心位于(0,0),宽100高200

    3.16(随机点)编写程序,显示矩形中一个随机点的坐标.矩形中心位于(0,0),宽100高200 题目 题目描述 破题 代码 题目 题目描述 3.16(随机点)编写程序,显示矩形中一个随即点的坐标.矩 ...

  5. java填空题 在非静态成员方法中_成本加成定价法的优点有

    [单选题]以下Math类的方法中,-4.4通过哪个方法运算后,结果为-5.0? [填空题]以下程序的输出结果为? [单选题]下列方法定义中,正确的是() [判断题]Java 中被 final 关键字修 ...

  6. 在几何图形中均匀随机取点算法总结及Delaunay三角剖分算法介绍

    在工作中遇到一个需求,需要在圆形 矩形,三角形内随机,尽量均匀取点作为位置信息,但是random得到的信息有时候不是很满意. 这里讨论一下 第一种错误思路: 根据圆的解析式 (假设圆心在原点)我们可以 ...

  7. iMeta|同济大学朱瑞新团队靶向基石菌种可恢复非酒精性脂肪肝中失调的产丁酸菌...

    点击蓝字 关注我们 靶向基石菌种可恢复非酒精性脂肪肝中失调的产丁酸菌 https://doi.org/10.1002/imt2.61 RESEARCH ARTICLE ●2022年11月16日,同济大 ...

  8. python判断点在矩形内_Python测试点是否在矩形中

    我是python的新手,仍然学习绳索??,但是我希望有更多经验的人可以帮助我. 我正在尝试编写以下Python脚本: >创造四个点 >创建四个矩形 >检查每个点是否在任何矩形中,然后 ...

  9. LeetCode 1031. 两个非重叠子数组的最大和(一次遍历,要复习)*

    文章目录 1. 题目 2. 解题 2.1 暴力枚举 2.2 一次遍历 1. 题目 给出非负整数数组 A ,返回两个非重叠(连续)子数组中元素的最大和,子数组的长度分别为 L 和 M.(这里需要澄清的是 ...

  10. 如何在C中生成随机int?

    是否有在C中生成随机int数的函数? 或者我必须使用第三方库吗? #1楼 让我们来看看. 首先,我们使用srand()函数为随机化器播种. 基本上,计算机可以根据提供给srand()的数字生成随机数. ...

最新文章

  1. JavaWeb第四讲 会话跟踪技术HttpSession、Cookie、url、隐藏表单域
  2. Context结构图
  3. 为什么Docker对初创企业有意义
  4. go中make、new和直接var的区别
  5. 使用JavaScript进行数组去重——一种高效的算法
  6. 根据个人亲身进阶架构师经历系统构建20大进阶架构师专题!
  7. 10个实用的 ES6 方法
  8. python 翻译库本地库_利用python爬取并翻译GEO数据库
  9. TCP和UDP的不同
  10. FL Studio20.8中文版界面下载更新内容介绍
  11. DIN 轴承标准目录
  12. matlab NORM函数
  13. 光伏发电系统红外热图像(227幅图像,无标签,可用于识别蜗牛尾迹与热点故障)
  14. java程序替换字符串里的中文括号为英文括号
  15. 2014.07.30 Hosts更新
  16. python新手入门程序——实验5
  17. [RK3568 Android11] 教程之制作和替换android开机logo图片
  18. 介质服务器作用,爱数之介质服务器及介质同步技术
  19. PS一次性导出多倍图@1x、@2x、@3x
  20. win7系统如何升级到win10专业版教程

热门文章

  1. 阿里架构10年,头条开发2年,我终于写出了一套Java核心知识点!
  2. Mysql InnoDB行锁实现方式
  3. 计算字符串的相似度-两种解法
  4. 《数据结构与抽象:Java语言描述(原书第4版)》一第2章
  5. PHP中钩子函数的实现与认识
  6. 输入法弹出,屏幕自动适应
  7. Java中必须了解的常用类
  8. 前端-----今日份小练习
  9. 2022届秋招笔试题小结:图
  10. Shopee2022届校园招聘提前批笔试