我的想法是,利用map,key为某个元素出现的次数,value为对应的元素!!但是如果有次数相同的元素,这个方法就不好使了!!
还有个想法是,放到list里面,然后排序,感觉也不大很好!!
以int数组为例!!
10 个解决方案
#1
先排序,相同必相邻,求最长相同子串,SE区有帖子讨论过这个问题了,找找看~
#2
把数组中的元素循环,与字符串空做INDEXOF,如果没有就添加一个MAP KEY为数组中的元素 VALUE为次数,另字符串+数组中的元素+“,” 每次没找到就添加一个,找到了就把VALUE的值加一,这样应该好些吧
#3
你为什么不是把 key 为某个元素, value 为出现的次数呢
#4
如果数字限定范围,范围小的话,建议用两个数组来用,这样速度非常快。 如:int[]a={1,1,2,3,3,4,4}
第二个数组就有5个长度 int[]b=new int[5];
for(int i=0;i<a.length;i++){
b[a[i]]++;
}
这样你在算出b数组中哪个最数最大,那么他的下标就是a数组中出现 最多次数的数了
第二个数组就有5个长度 int[]b=new int[5];
for(int i=0;i<a.length;i++){
b[a[i]]++;
}
这样你在算出b数组中哪个最数最大,那么他的下标就是a数组中出现 最多次数的数了
#5
恩,恩,这样就可以了,只要key有了,就把value加一,这样就可以了吧。
#6
这个方法也可以,不过 int[] a = {1,1,3,4,5,6,6,5,1099785};就麻烦了
数组b就浪费很多空间了
#7
说了范围小时候 用吗
#8
解决不知道长度
可以再做for循环 查找是否和前面的相同 相同则不新加 数组元素
不过查询浪费时间
可以再做for循环 查找是否和前面的相同 相同则不新加 数组元素
不过查询浪费时间
#9
嗯 谢谢大家的回复 看来里面高手很多啊 开阔了我的思维了 我总是感觉自己编程转不过弯来 嗨 尤其是这种问题 我也不知道自己怎么回事,感觉脑袋转不动 哈哈 最近闲 正在找题目锻炼我的大脑袋呢!!
#10
同样,~~~~~~~~~~~~~~
#1
先排序,相同必相邻,求最长相同子串,SE区有帖子讨论过这个问题了,找找看~
#2
把数组中的元素循环,与字符串空做INDEXOF,如果没有就添加一个MAP KEY为数组中的元素 VALUE为次数,另字符串+数组中的元素+“,” 每次没找到就添加一个,找到了就把VALUE的值加一,这样应该好些吧
#3
你为什么不是把 key 为某个元素, value 为出现的次数呢
#4
如果数字限定范围,范围小的话,建议用两个数组来用,这样速度非常快。 如:int[]a={1,1,2,3,3,4,4}
第二个数组就有5个长度 int[]b=new int[5];
for(int i=0;i<a.length;i++){
b[a[i]]++;
}
这样你在算出b数组中哪个最数最大,那么他的下标就是a数组中出现 最多次数的数了
第二个数组就有5个长度 int[]b=new int[5];
for(int i=0;i<a.length;i++){
b[a[i]]++;
}
这样你在算出b数组中哪个最数最大,那么他的下标就是a数组中出现 最多次数的数了
#5
恩,恩,这样就可以了,只要key有了,就把value加一,这样就可以了吧。
#6
这个方法也可以,不过 int[] a = {1,1,3,4,5,6,6,5,1099785};就麻烦了
数组b就浪费很多空间了
#7
说了范围小时候 用吗
#8
解决不知道长度
可以再做for循环 查找是否和前面的相同 相同则不新加 数组元素
不过查询浪费时间
可以再做for循环 查找是否和前面的相同 相同则不新加 数组元素
不过查询浪费时间
#9
嗯 谢谢大家的回复 看来里面高手很多啊 开阔了我的思维了 我总是感觉自己编程转不过弯来 嗨 尤其是这种问题 我也不知道自己怎么回事,感觉脑袋转不动 哈哈 最近闲 正在找题目锻炼我的大脑袋呢!!
#10
同样,~~~~~~~~~~~~~~