2453. 摧毁一系列目标
给你一个下标从 0 开始的数组 nums
,它包含若干正整数,表示数轴上你需要摧毁的目标所在的位置。同时给你一个整数 space
。
你有一台机器可以摧毁目标。给机器 输入 nums[i]
,这台机器会摧毁所有位置在 nums[i] + c * space
的目标,其中 c
是任意非负整数。你想摧毁 nums
中 尽可能多 的目标。
请你返回在摧毁数目最多的前提下,nums[i]
的 最小值 。
示例 1:
输入:nums = [3,7,8,1,1,5], space = 2 输出:1 解释:如果我们输入 nums[3] ,我们可以摧毁位于 1,3,5,7,9,... 这些位置的目标。 这种情况下, 我们总共可以摧毁 5 个目标(除了 nums[2])。 没有办法摧毁多于 5 个目标,所以我们返回 nums[3] 。
示例 2:
输入:nums = [1,3,5,2,4,6], space = 2 输出:1 解释:输入 nums[0] 或者 nums[3] 都会摧毁 3 个目标。 没有办法摧毁多于 3 个目标。 由于 nums[0] 是最小的可以摧毁 3 个目标的整数,所以我们返回 1 。
示例 3:
输入:nums = [6,2,5], space = 100 输出:2 解释:无论我们输入哪个数字,都只能摧毁 1 个目标。输入的最小整数是 nums[1] 。
提示:
1 <= nums.length <= 105
1 <= nums[i] <= 109
1 <= space <= 109
解题思路
给机器输入nums[i],这台机器会摧毁所有位置在 nums[i] + c * space的目标,其中 c 是任意非负整数。
可见,对于输入的 nums[i] 而言,若存在
nums[j]=nums[i]+c∗space ,(1)
那么 nums[j] 也能被摧毁。
根据上式易得:
nums[j] % space = (nums[i]+c∗space) % space
参考余数的分配率:(a+b)%p=(a%p+b%p)%p
最后得
nums[j] % space=nums[i] % space ,(2)
其中 % 表示求余操作(MOD)。换句话说,nums[i] 和 nums[j] 所对应目标能被同时摧毁的充要条件为 nums[i] 和 nums[j] 对于 space 同余。
基于式(2),我们可以计算出 nums 中的每一个元素对于 space 的余数,并以哈希表统计对应余数的数目。 哈希表中的最大统计值即为我们能摧毁的最多数目,找到最大统计值所对应的最小 nums[i]即为答案。
code:
class Solution:def destroyTargets(self, nums: List[int], space: int) -> int:mp = Counter() # space<=1e9,用哈希表可压缩空间for num in nums:mp[num % space] += 1ans = float('inf')mx = max(mp.values())for num in nums:if mp[num % space] == mx and num < ans:ans = numreturn ans
2453. 摧毁一系列目标相关推荐
- LeetCode 6226. 摧毁一系列目标
6226. 摧毁一系列目标 [哈希+同余] class Solution {public int destroyTargets(int[] nums, int space) {Map<Integ ...
- 365天挑战LeetCode1000题——Day 129 第90场双周赛
2451. 差值数组不同的字符串 代码实现 class Solution {public:string oddString(vector<string>& words) {vect ...
- 目标检测 RCNN算法详解
原文:http://blog.csdn.net/shenxiaolu1984/article/details/51066975 [目标检测]RCNN算法详解 Girshick, Ross, et al ...
- 【目标检测】Fast RCNN算法详解
转载自:http://blog.csdn.net/shenxiaolu1984/article/details/51036677 Girshick, Ross. "Fast r-cnn.&q ...
- 【目标检测】RCNN算法详解
转载自:http://blog.csdn.net/shenxiaolu1984/article/details/51066975 Girshick, Ross, et al. "Rich f ...
- cmake的使用-目标类型详解
Target Types 本章概括 CMake支持的类型有很多种,可以是可执行文件或者库文件,也可以在不构建的情况下作为其它实体的引用. 使用这种引用作用:可以在不将对象构建成自己的二进制文件的情况下 ...
- 目标检测系列(四)——Fast R-CNN译文
文章目录 摘要 1. 引言 1.1 R-CNN和SPPnet 1.2 本文贡献点 2. Fast R-CNN的框架和训练过程 2.1 RoI pooling层 2.2 从预训练网络初始化 2.3 针对 ...
- 如何制定有价值的目标
写于2017年07月09日23:29 现在修改发布到公众号声明原创 公司会制定一系列目标,个人也可以制定一些目标,有利于自我学习成长.那么看我这篇文章可以告诉你如何制定有价值的目标.会制定有价值的目标 ...
- 【目标检测】Fast RCNN算法详解(转)
Girshick, Ross. "Fast r-cnn." Proceedings of the IEEE International Conference on Computer ...
最新文章
- JAVA设计模式之命令模式
- [Ruby编程语言].弗拉纳根_松本行弘读书笔记
- 爬虫python书籍-Python爬虫案例:抓取豆瓣编程类高评分书籍
- Spring Validation 最佳实践及其实现原理,参数校验没那么简单!
- 基于ZXing的二维码,你可以这样改造它
- Wdcp在安装memcached出现错误的解决办法
- SaaS全球普及面临三大门槛
- Android接入百度自动更新SDK
- CSS中class优先级问题
- mysql重建索引_mysql创建、删除、重建、删除索引的操作命令的一些总结
- 从源码深入理解Spring IoC 注解
- The Wave kernel Signature: A Quantum Mechanical Approach to shape Analysis
- freeswitch cdr mysql_freeswitch支持g729编码
- 手撕Boost!Boost公式推导及实验验证
- 基于sass的前端样式管理方案
- 树莓派4b主板特点_树莓派4B的入手操作
- 最新获得淘宝app商品详情原数据 的API
- 4.0 RTL8723DU驱动(wifi+蓝牙)
- 运维初学者必备之SRS音视频服务器搭建
- 五、jQuery 对表单、表格的操作(走过路过瞅瞅吧)