Golang | Leetcode Golang题解之第497题非重叠矩形中的随机点

题目:

题解:

Go 复制代码
type Solution struct {
    rects [][]int
    sum   []int
}

func Constructor(rects [][]int) Solution {
    sum := make([]int, len(rects)+1)
    for i, r := range rects {
        a, b, x, y := r[0], r[1], r[2], r[3]
        sum[i+1] = sum[i] + (x-a+1)*(y-b+1)
    }
    return Solution{rects, sum}
}

func (s *Solution) Pick() []int {
    k := rand.Intn(s.sum[len(s.sum)-1])
    rectIndex := sort.SearchInts(s.sum, k+1) - 1
    r := s.rects[rectIndex]
    a, b, y := r[0], r[1], r[3]
    da := (k - s.sum[rectIndex]) / (y - b + 1)
    db := (k - s.sum[rectIndex]) % (y - b + 1)
    return []int{a + da, b + db}
}
相关推荐
trueEve1 小时前
SQL,力扣题目1369,获取最近第二次的活动
算法·leetcode·职场和发展
007php0071 小时前
GoZero 上传文件File到阿里云 OSS 报错及优化方案
服务器·开发语言·数据库·python·阿里云·架构·golang
高 朗3 小时前
【GO基础学习】基础语法(2)切片slice
开发语言·学习·golang·slice
九圣残炎3 小时前
【从零开始的LeetCode-算法】3354. 使数组元素等于零
java·算法·leetcode
IT书架3 小时前
golang面试题
开发语言·后端·golang
程序猿小柒3 小时前
leetcode hot100【LeetCode 4.寻找两个正序数组的中位数】java实现
java·算法·leetcode
_OLi_4 小时前
力扣 LeetCode 106. 从中序与后序遍历序列构造二叉树(Day9:二叉树)
数据结构·算法·leetcode
我明天再来学Web渗透5 小时前
【SQL50】day 2
开发语言·数据结构·leetcode·面试
小叶lr6 小时前
idea 配置 leetcode插件 代码模版
java·leetcode·intellij-idea
醒过来摸鱼9 小时前
【Golang】协程
开发语言·后端·golang