标签:LeetCode.781 cnt int answers second 兔子 数组 森林
题目描述:
森林中有未知数量的兔子。提问其中若干只兔子 "还有多少只兔子与你(指被提问的兔子)颜色相同?" ,将答案收集到一个整数数组 answers 中,其中 answers[i] 是第 i 只兔子的回答。
给你数组 answers ,返回森林中兔子的最少数量。
理解此题的关键是:
1、说出与自己颜色相同兔子数量相等的兔子划分为同一组,并且数量为n;
2、在1的基础上,从前往后遍历answers数组,当遍历到n + 1个n,则需要重新进行计数。
class Solution { public: int numRabbits(vector<int>& answers) { map<int, int> m; // 另外的兔子个数,剩余的个数 for (int i = 0; i < answers.size(); i++) { if (!m.count(answers[i])) { m[answers[i]] = answers[i]; } else { if (m[answers[i]] > 0) { m[answers[i]]--; } else { m[answers[i]] = answers[i]; } } } int cnt = answers.size(); for (auto &[first, second]: m) { if (second > 0) { cnt += second; } } return cnt; } };
标签:LeetCode.781,cnt,int,answers,second,兔子,数组,森林 来源: https://www.cnblogs.com/youyipin/p/15774516.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。