当前位置:网站首页>LeetCode 497(C#)
LeetCode 497(C#)
2022-07-07 15:38:00 【有趣就行】
题目
给定一个由非重叠的轴对齐矩形的数组 rects ,其中 rects[i] = [ai, bi, xi, yi] 表示 (ai, bi) 是第 i 个矩形的左下角点,(xi, yi) 是第 i 个矩形的右上角点。设计一个算法来随机挑选一个被某一矩形覆盖的整数点。矩形周长上的点也算做是被矩形覆盖。所有满足要求的点必须等概率被返回。
在给定的矩形覆盖的空间内的任何整数点都有可能被返回。
请注意 ,整数点是具有整数坐标的点。
实现 Solution 类:
Solution(int[][] rects) 用给定的矩形数组 rects 初始化对象。
int[] pick() 返回一个随机的整数点 [u, v] 在给定的矩形所覆盖的空间内。
示例 1:
输入:
[“Solution”, “pick”, “pick”, “pick”, “pick”, “pick”]
[[[[-2, -2, 1, 1], [2, 2, 4, 6]]], [], [], [], [], []]
输出:
[null, [1, -2], [1, -1], [-1, -2], [-2, -2], [0, 0]]
解释:
Solution solution = new Solution([[-2, -2, 1, 1], [2, 2, 4, 6]]);
solution.pick(); // 返回 [1, -2]
solution.pick(); // 返回 [1, -1]
solution.pick(); // 返回 [-1, -2]
solution.pick(); // 返回 [-2, -2]
solution.pick(); // 返回 [0, 0]
代码
二分 + 前缀和
public class Solution
{
Random _random;
int[] _sum;
int[][] _rects;
public Solution(int[][] rects)
{
_rects = rects;
_sum = new int[rects.Length + 1];
for (int i = 1; i <= rects.Length; i++)
_sum[i] = _sum[i - 1] + (rects[i - 1][2] - rects[i - 1][0] + 1) * (rects[i - 1][3] - rects[i - 1][1] + 1);
_random = new Random();
}
public int[] Pick()
{
int k = _random.Next(_sum[_sum.Length - 1]);
int index = BinarySearch(k + 1) - 1;
k -= _sum[index];
int[] cnt = _rects[index];
int col = cnt[3] - cnt[1] + 1;
return new int[]{
cnt[0] + k / col, cnt[1] + k % col};
}
private int BinarySearch(int k)
{
var (low, high) = (0, _sum.Length - 1);
while (low < high)
{
int mid = low + (high - low) / 2;
if (_sum[mid] >= k) high = mid;
else low = mid + 1;
}
return high;
}
}
边栏推荐
- [fan Tan] after the arrival of Web3.0, where should testers go? (ten predictions and suggestions)
- 第九届 蓝桥杯 决赛 交换次数
- LeetCode 1031. 两个非重叠子数组的最大和 每日一题
- 智慧物流平台:让海外仓更聪明
- centos7安装mysql笔记
- skimage学习(1)
- LeetCode 213. 打家劫舍 II 每日一题
- LeetCode 120. 三角形最小路径和 每日一题
- 麒麟信安携异构融合云金融信创解决方案亮相第十五届湖南地区金融科技交流会
- 赋能智慧电力建设 | 麒麟信安高可用集群管理系统,保障用户关键业务连续性
猜你喜欢
《产品经理必读:五种经典的创新思维模型》的读后感
Sator a lancé le jeu web 3 "satorspace" et a lancé huobi
Test case management tool recommendation
Nerf: the ultimate replacement for deepfake?
User defined view essential knowledge, Android R & D post must ask 30+ advanced interview questions
麒麟信安携异构融合云金融信创解决方案亮相第十五届湖南地区金融科技交流会
【Seaborn】组合图表:FacetGrid、JointGrid、PairGrid
Skimage learning (2) -- RGB to grayscale, RGB to HSV, histogram matching
The top of slashdata developer tool is up to you!!!
skimage学习(3)——Gamma 和 log对比度调整、直方图均衡、为灰度图像着色
随机推荐
First in China! Todesk integrates RTC technology into remote desktop, with clearer image quality and smoother operation
Notes on installing MySQL in centos7
Is AI more fair than people in the distribution of wealth? Research on multiplayer game from deepmind
[image sensor] correlated double sampling CDs
LeetCode 1696. Jumping game VI daily question
Proxmox VE重装后,如何无损挂载原有的数据盘?
AI来搞财富分配比人更公平?来自DeepMind的多人博弈游戏研究
Leetcode brush questions day49
mysql使用笔记一
SlashData开发者工具榜首等你而定!!!
LeetCode 300. Daily question of the longest increasing subsequence
服务器彻底坏了,无法修复,如何利用备份无损恢复成虚拟机?
Linux 安装mysql8.X超详细图文教程
【源码解读】| LiveListenerBus源码解读
Sator a lancé le jeu web 3 "satorspace" et a lancé huobi
99% 用户在 Power BI 云端报表常犯错误
防火墙系统崩溃、文件丢失的修复方法,材料成本0元
LeetCode 120. 三角形最小路径和 每日一题
Blue Bridge Cup final XOR conversion 100 points
QT picture background color pixel processing method