我在测验中尝试回答这个问题。
它要求确保一个数组最多可以包含2个重复的元素,如果任何元素出现超过两次,则应将其删除。
Given - [2, 2, 2, 3, 4, 4, 5]
Expected - [2, 2, 3, 4, 4, 5]
因此,我尝试了如下方法-
第一次
由于值-2与频率-3,需要从Map中删除“2”
// 3. Remove 'need_to_remove' value from map
map.remove(need_to_remove);
但这样做,它会从map中删除Element - 2的所有示例。{3=1, 4=2, 5=1}
我不太确定接下来要做什么。
3条答案
按热度按时间brccelvz1#
创建一个新的空列表(我们称之为
dest
)和一个值和频率的Map(我们称之为freq
)。通过迭代
data
列表来填充dest
列表。当您逐一查看清单时,请更新
freq
,并递增Map于data
中之值的索引键值。如果
freq.get(value)
大于2,则不将其复制到dest
。一旦你完全迭代了
data
列表,dest
应该包含不超过2个给定值示例的值。此外,
freq
还应包含该键在data
中出现的 * 总 * 次数。这使得你不需要在原地改变
data
列表-你只是复制它,并且最多只复制给定值的2。qlvxas9a2#
如果输入是一个列表,频率Map应该只用于跟踪使用
Map::merge
方法的出现次数。如果使用迭代器遍历列表,可以从列表中删除重复的元素,并且Iterator
具有remove()
方法:如果输入是以数组形式提供的,则应创建一个新的调整大小的数组,并复制相应的元素。
hgqdbh6s3#
remove()用于从Map中删除任何特定键的Map。
假设这个Map是你的数据hashMap.并且你想减少你的键中的值的计数,这里是2.所以你应该通过获取值并减少它来再次设置值.就像这样
但是你应该在你逮捕中去掉一把钥匙,而不是你的Map。
这样你就能更好地解决你的问题。