LeetCode 1655. 分配重复整数(回溯)
                                                            生活随笔
收集整理的這篇文章主要介紹了
                                LeetCode 1655. 分配重复整数(回溯)
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.                        
                                文章目錄
- 1. 題目
- 2. 解題
- 2.1 回溯
 
 
1. 題目
給你一個長度為 n 的整數(shù)數(shù)組 nums ,這個數(shù)組中至多有 50 個不同的值。
 同時你有 m 個顧客的訂單 quantity ,其中,整數(shù) quantity[i] 是第 i 位顧客訂單的數(shù)目。請你判斷是否能將 nums 中的整數(shù)分配給這些顧客,且滿足:
- 第 i 位顧客 恰好 有 quantity[i] 個整數(shù)。
- 第 i 位顧客拿到的整數(shù)都是 相同的 。
- 每位顧客都滿足上述兩個要求。
如果你可以分配 nums 中的整數(shù)滿足上面的要求,那么請返回 true ,否則返回 false 。
示例 1: 輸入:nums = [1,2,3,4], quantity = [2] 輸出:false 解釋:第 0 位顧客沒辦法得到兩個相同的整數(shù)。示例 2: 輸入:nums = [1,2,3,3], quantity = [2] 輸出:true 解釋:第 0 位顧客得到 [3,3] 。整數(shù) [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 個一樣的整數(shù)。示例 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 個不同的數(shù)字。來源:力扣(LeetCode)
 鏈接:https://leetcode-cn.com/problems/distribute-repeating-integers
 著作權(quán)歸領(lǐng)扣網(wǎng)絡(luò)所有。商業(yè)轉(zhuǎn)載請聯(lián)系官方授權(quán),非商業(yè)轉(zhuǎn)載請注明出處。
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/
長按或掃碼關(guān)注我的公眾號(Michael阿明),一起加油、一起學(xué)習(xí)進步!
 
總結(jié)
以上是生活随笔為你收集整理的LeetCode 1655. 分配重复整数(回溯)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: LeetCode 649. Dota2
- 下一篇: 03.结构化机器学习项目 W1.机器学习
