如何在不使用任何第三方库的情况下从dart列表中获取最受欢迎的数字?
var list = [0, 1, 1, 2, 2, 2, 3, 3, 4]; // most popular number is 2
如果有两个或两个以上的流行数字,那么输出应该是一个具有两个值的List。示例:
一个流行的数字:
var list = [0, 1, 1, 2, 2, 2, 3, 3, 4];
// Output should be [2]
两个或两个以上常用数字:
var list = [0, 1, 1, 2, 2, 2, 3, 3, 3];
// Output should be [2, 3]
提前感谢您的帮助!
6条答案
按热度按时间yqyhoc1h1#
这是可行的。。。你可以优化它
oxf4rvwz2#
试试这个方法来计算列表中的每个元素:
vjhs03f73#
我想我找到解决办法了。
让我解释给你听:
我已经查询了你的列表,并检查了map的键是否包含元素。如果map不包含元素作为键,那么它将从元素创建一个键并传递1作为值。如果map包含元素作为键,那么它将简单地增加值。
Map准备好后,我对Map值进行了排序,并将它们存储在一个列表中。从排序后的Map值中,我从排序后的值列表中取出了最后一个元素,因为我们是按升序排序的,所以最受欢迎的值将出现在最后。
最后,我通过map查询并检查特定键的值是否等于
popularValue
。如果是,那么我们将当前键和值添加到mostPopularValues
列表中。如果我做错了什么,请让我知道。
brc7rcf04#
我不确定这是不是最好的解决方案,但效果很好。如果有任何疑问,请告诉我。
dxpyg8gm5#
我通过在
Iterable
上定义一个扩展来解决这个问题:基本思想是计算
Map
对象中每个项的所有出现次数,从该Map中获得最高计数,然后返回具有该特定出现次数的所有项。zpjtge226#
你可以从这样的东西开始,不管它是字符串还是整数