文章目录

  • 1. 题目
  • 2. 解题
    • 2.1 回溯

1. 题目

给你一个长度为 n 的整数数组 nums ,这个数组中至多有 50 个不同的值。
同时你有 m 个顾客的订单 quantity ,其中,整数 quantity[i] 是第 i 位顾客订单的数目。请你判断是否能将 nums 中的整数分配给这些顾客,且满足:

  • 第 i 位顾客 恰好 有 quantity[i] 个整数。
  • 第 i 位顾客拿到的整数都是 相同的 。
  • 每位顾客都满足上述两个要求。

如果你可以分配 nums 中的整数满足上面的要求,那么请返回 true ,否则返回 false 。

示例 1:
输入:nums = [1,2,3,4], quantity = [2]
输出:false
解释:第 0 位顾客没办法得到两个相同的整数。示例 2:
输入:nums = [1,2,3,3], quantity = [2]
输出:true
解释:第 0 位顾客得到 [3,3] 。整数 [1,2] 都没有被使用。示例 3:
输入:nums = [1,1,2,2], quantity = [2,2]
输出:true
解释:第 0 位顾客得到 [1,1] ,第 1 位顾客得到 [2,2] 。示例 4:
输入:nums = [1,1,2,3], quantity = [2,2]
输出:false
解释:尽管第 0 位顾客可以得到 [1,1] ,第 1 位顾客没法得到 2 个一样的整数。示例 5:
输入:nums = [1,1,1,1,1], quantity = [2,3]
输出:true
解释:第 0 位顾客得到 [1,1] ,第 1 位顾客得到 [1,1,1] 。提示:
n == nums.length
1 <= n <= 10^5
1 <= nums[i] <= 1000
m == quantity.length
1 <= m <= 10
1 <= quantity[i] <= 10^5
nums 中至多有 50 个不同的数字。

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/distribute-repeating-integers
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

2. 解题

2.1 回溯

class Solution {bool ans = false;
public:bool canDistribute(vector<int>& nums, vector<int>& quantity) {unordered_map<int,int> m;for(auto n : nums)m[n]++;vector<int> val(m.size(), 0);int i = 0;for(auto it = m.begin(); it != m.end(); ++it)val[i++] = it->second;sort(val.rbegin(), val.rend());sort(quantity.rbegin(), quantity.rend());dfs(val, quantity, 0);return ans;}void dfs(vector<int>& val, vector<int>& quantity, int i){if(ans)return;if(i == quantity.size()){ans = true;return;}for(int j = 0; j < val.size(); ++j){if(val[j]-quantity[i] >= 0){val[j] -= quantity[i];dfs(val, quantity, i+1);val[j] += quantity[i];}}}
};

820 ms 73.5 MB


我的CSDN博客地址 https://michael.blog.csdn.net/

长按或扫码关注我的公众号(Michael阿明),一起加油、一起学习进步!

LeetCode 1655. 分配重复整数(回溯)相关推荐

  1. 【LeetCode】1655. Distribute Repeating Integers 分配重复整数

    一题多解. 首先理解问题,可以抽象为: 有若干物品,大小分别为quantity[i]. 假如某个数字重复x次,可理解为有一个容量为x的背包 要把物品放进背包里,问能不能放完 DFS 暴力解法,直接遍历 ...

  2. DFS 如何避免重复母题 Leetcode 077组合(人为规定选取顺序:本题为只能从前往后选,好马不吃回头草)(类似题:Leetcode047全排列(可能含重复元素)-回溯法加剪枝)

    类似题 Leetcode047全排列(可能含重复元素)-----------回溯法加剪枝 https://blog.csdn.net/qq_52934831/article/details/11957 ...

  3. LeetCode 491. 递增子序列(回溯+判重剪枝)

    1. 题目 给定一个整型数组, 你的任务是找到所有该数组的递增子序列,递增子序列的长度至少是2. 示例: 输入: [4, 6, 7, 7] 输出: [[4, 6], [4, 7], [4, 6, 7] ...

  4. LeetCode 47. 全排列 II(回溯+搜索剪枝)

    文章目录 1. 题目信息 2. 解题 1. 题目信息 给定一个可包含重复数字的序列,返回所有不重复的全排列. 示例:输入: [1,1,2] 输出: [[1,1,2],[1,2,1],[2,1,1] ] ...

  5. C++找出数组中的第一个非重复整数的算法(附完整源码)

    C++找出数组中的第一个非重复整数的算法 C++找出数组中的第一个非重复整数的算法完整源码(定义,实现,main函数测试) C++找出数组中的第一个非重复整数的算法完整源码(定义,实现,main函数测 ...

  6. [DFA|有限状态机] leetcode 8 字符串转换整数(atoi)

    [DFA|有限状态机] leetcode 8 字符串转换整数(atoi) 1.题目 题目链接 请你来实现一个 atoi 函数,使其能将字符串转换成整数. 首先,该函数会根据需要丢弃无用的开头空格字符, ...

  7. [贪心|字符串] leetcode 3 无重复字符的最长子串

    [贪心|字符串] leetcode 3 无重复字符的最长子串 1.题目 题目链接 给定一个字符串,请你找出其中不含有重复字符的最长子串的长度. 示例1: 输入: "abcabcbb" ...

  8. c语言罗马数字换成整数,leetcode 13 罗马数字转整数 C语言

    leetcode 13 罗马数字转整数 原题 罗马数字包含以下七种字符: I, V, X, L,C,D 和 M. 字符 数值 I 1 V 5 X 10 L 50 C 100 D 500 M 1000 ...

  9. Python LeetCode(13.罗马数字转整数)

    Python LeetCode(13.罗马数字转整数) 罗马数字包含以下七种字符: I, V, X, L,C,D 和 M. 字符 数值 I 1 V 5 X 10 L 50 C 100 D 500 M ...

最新文章

  1. 数据库路由中间件MyCat - 使用篇(2)
  2. uva673 Parentheses Balance
  3. string转换为bigdecimal_java如何将String转换为Int
  4. Java集合框架:TreeMap
  5. 单例模式(饿汉式和懒汉式)
  6. if __name__ == __main___一文带你弄懂python中if __name__ == #39;__main__#39;
  7. 郁金香商业辅助教程 2016 笔记 6~10
  8. python用一行代码编写一个回声程序_Python源码分析2 - 一个简单的Python程序的执行...
  9. 基于Cocos2d-x开发guardCarrot--4 《保卫萝卜2》主页面动画
  10. linux虚拟usbgs0,USB模拟串口
  11. java 使用websocket_Java使用WebSocket
  12. Linux下的经典软件-史上最全
  13. 惠普传真服务器位置,惠普传真机的使用方法
  14. mac关于 E45: ‘readonly‘ option is set (add ! to override)
  15. 7-1 愿天下有情人都是失散多年的兄妹 (25 分)
  16. python缩进块是什么,Python块缩进
  17. HTML5印章绘制电子签章图片,中文英文椭圆章、中文英文椭圆印章
  18. 黑马程序员---Java 容器集合
  19. python变量赋值方式_python中变量的命令规制及变量的赋值方式
  20. c语言弹出窗口的函数名,用C语言做弹出窗口

热门文章

  1. patator mysql 字典_利用patator进行子域名爆破
  2. 【技术+某度面经】Jenkins 内容+百度面经分享
  3. Python基础总结之常用内置方法总结
  4. 恩智浦智能车大赛2020_内蒙古科技大学第九届智能车大赛校内公开赛总决赛
  5. C++ virtual 析构函数
  6. C# 线程池ThreadPool
  7. 嵌入式基础认识2:shell脚本的一些简单语法规则
  8. vim编辑器中如何查找某个词
  9. 1、绪论初识机器学习
  10. 做个流量站-聚茶吧, 汇聚茶的地方