news 2026/4/27 22:08:56

leetcode 困难题 1655. 分配重复整数-Distribute Repeating Integers

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
leetcode 困难题 1655. 分配重复整数-Distribute Repeating Integers

Problem: 1655. 分配重复整数-Distribute Repeating Integers

计算得到nums数字的频次,排序的,quantity倒序排序的,tr顺序排序,若tr.back() >=sum(quantity)表示一定可行,若sum(quantity) > sum(tr)表示一定不行,若quantity.back() > tr.back()也表示不行

status表示被用掉的quantity,对每个tr[i],从大到小找到使得tr[i] - sum(quantity[i] + quantity[j] + quantity[k] + …)最小的i, j, k等等,用状态数组status标记

优先使用tr[i]完全等于quantity[j]的i、j数对

最后检查是否存在quantity没有被分配出去

Code

class Solution { public: vector<bool> status, cp; int mi; void dfs(vector<int>& quan, int num) { if(num < 0) { return; } else { if(mi > num) { mi = num; cp = status; } } unordered_set<int> te; for(int i = 0; i < quan.size(); i++) { if(te.find(quan[i])!=te.end()) continue; if(status[i] ==false && quan[i] <= num) { te.insert(quan[i]); status[i] = true; dfs(quan, num - quan[i]); status[i] = false; } } } bool canDistribute(vector<int>& nums, vector<int>& quantity) { unordered_map<int, int> mp; for(int& i : nums) mp[i]++; int sum = 0, s2 = 0; for(int& i : quantity) sum += i; vector<int> tr; for(auto&& [k, l] : mp) tr.push_back(l); sort(tr.begin(), tr.end()); sort(quantity.begin(), quantity.end(), greater<int>()); for(int& i : tr) s2 += i; if(tr.back() >= sum) return true; if(sum > s2) return false; if(quantity.back() > tr.back()) return false; int m = tr.size(), n = quantity.size(), a; status.assign(n, false); cp = status; for(int i = 0; i < m; i++) { status = cp; mi = INT_MAX; dfs(quantity, tr[i]); } for(int i = 0; i < n; i++) { if(cp[i] == false) { return false; } } return true; } };
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/27 5:17:03

程序员转Agent大模型的感受

去年这个时候我还在天天写业务代码、接需求、改bug&#xff0c;跟数据库和接口打交道。 今年跳槽做了Agent开发&#xff0c;涨幅40%出头&#xff0c;说实话自己也没想到。 之前刷帖子老是看到一堆人问谁谁谁怎么转的&#xff0c;今天我也来蹭一蹭&#xff0c;简单聊聊自己的这…

作者头像 李华
网站建设 2026/4/15 6:16:38

云原生时代下的开发者

云原生时代下的开发者 随着云计算技术的飞速发展&#xff0c;云原生已成为现代软件开发的核心理念。它通过容器化、微服务、DevOps等技术&#xff0c;重新定义了开发者的工作方式。在云原生时代&#xff0c;开发者不仅需要掌握传统的编程技能&#xff0c;还需适应快速迭代、自…

作者头像 李华
网站建设 2026/4/15 6:09:26

方法概述以及执行原理

1.方法概述1 方法是什么方法是一种语法结构&#xff0c;它可以把一段代码封装成一个功能&#xff0c;以方便重复调用。 这句话什么意思呢&#xff1f;意思是&#xff0c;把一段功能代码围在一起&#xff0c;别人都可以来调用它。方法必须先创建才可以使用&#xff0c;该过程成为…

作者头像 李华
网站建设 2026/4/15 6:03:38

@JsonProperty 注解的作用

JsonProperty 是 Jackson 库中用于 JSON 序列化和反序列化的核心注解&#xff0c;主要作用如下&#xff1a;核心功能1. 指定 JSON 字段名将 Java 属性映射到不同的 JSON 键名&#xff1a;java复制public class User {JsonProperty("user_name") // JSON 中显示为 us…

作者头像 李华