有一个字符串入[1,3,,4,7,2,1,1,5,2]输出里面出现次数最多的一个,最少的一个
有一个字符串入[1,3,,4,7,2,1,1,5,2]输出里面出现次数最多的一个,最少的一个
提供一个思路,建立两个数组,数组A(初值为-1),数组B(初值为0),数组A存放名字,数组B存放个数,A和B中是相对应的
接下来就遍历你的这个数组,判断一下然后添加各处信息
我觉得直接上hashtable就好了
不考虑效率问题的话直接用这样一个linq查询就可以了。
var query = from n in new int[] { 1, 3, 4, 7, 2, 1, 1, 5, 2 } group n by n into g let i = new { Value = g.Key, Count = g.Count() } orderby i.Count descending select i.Value; Console.WriteLine(query.First()); Console.WriteLine(query.Last());
int num = 0; Dictionary<string, int> getNum = new Dictionary<string, int>(); string[] strList = new string[] { "1", "3", "4", "7", "2", "1", "1", "5", "2" }; for (int i = 0; i < strList.Length; i++) { foreach (string str in strList) { if (strList[0].Equals(str)) { num++; } } getNum.Add(strList[i], num); }
先存入dictionary中 在最其进行排序找出最大,最小的
Dictionary<string, int> getNum = new Dictionary<string, int>(); string[] strList = new string[] { "1", "3", "4", "7", "2", "1", "1", "5", "2" }; for (int i = 0; i < strList.Length; i++) { int num = 0; foreach (string str in strList) { if (strList[0].Equals(str)) { num++; } } getNum.Add(strList[i], num); }
好吧!!上面的好像都是C#来回答的,我来一个JAVA的吧
public String[] strings = {"1","3","","4","7","2","1","1","5","2"}; public void getMore(){ Map<String,Integer> map = getMap(); Set<String> set = map.keySet(); Iterator<String> it =set.iterator(); String moreKey=null; String lowKey = null; while(it.hasNext()){ String key = it.next().toString(); //得到出现次数最多的key if(!map.containsKey(moreKey)){ moreKey = key; } if(map.get(key)>map.get(moreKey)){ moreKey = key; } //得到出现次数最少的key if(!map.containsKey(lowKey)){ lowKey = key; } if(map.get(key)<map.get(lowKey)){ lowKey = key; } } System.out.println("出现次数最多的字符串为:"+moreKey+",次数为:"+map.get(moreKey)+"||出现次数嘴上的字符串为:"+lowKey+",次数为:"+map.get(lowKey)); } public Map<String,Integer> getMap(){ Map<String,Integer> map = new HashMap<String,Integer>(); for(int i=0;i<strings.length;i++){ int count=1; for(int j=i+1;j<strings.length;j++){ if(strings[i].equals(strings[j])){ count++; } } if(!map.containsKey(strings[i])){ map.put(strings[i], count); } } return map; }
思路:先将这个数组存放到map中(去除重复的元素),key是数组元素值,value初始值为0;
遍历数组,如果数组元素,在map中的key中存在,则改key对应的value加1;
这样,map中value最大的就是出现最多的。。。