【LeetCode】数组能形成多少数对 Java 题解
题目描述
给你一个下标从 0 开始的整数数组 nums 。在一步操作中,你可以执行以下步骤:
从 nums 选出 两个 相等的 整数从 nums 中移除这两个整数,形成一个 数对请你在 nums 上多次执行此操作直到无法继续执行。
返回一个下标从 0 开始、长度为 2 的整数数组 answer 作为答案,其中 answer[0] 是形成的数对数目,answer[1] 是对 nums 尽可能执行上述操作后剩下的整数数目。
复制代码
思路分析
今天的算法题目是求整数数组 nums 数组对的个数,数对的定义是两个相等的整数。需要返回 answer,其中 answer[0] 是形成的数对数目,answer[1] 是对 nums 尽可能执行上述操作后剩下的整数数目。
根据题目描述,我们可以对整个数组进行遍历,统计数组中元素出现的次数。将元素的个数除以 2 就是对数的个数。在计算剩余元素个数的时候,不要忘记对数乘以 2 在相减。具体实现代码如下,供参考。
通过代码
复制代码
总结
上述算法的时间复杂度是 O(n),空间复杂度是 O(n)
坚持算法每日一题,加油!
版权声明: 本文为 InfoQ 作者【Albert】的原创文章。
原文链接:【http://xie.infoq.cn/article/8f1c2f0d4f6d3ef457daad064】。文章转载请联系作者。
评论