在網上看到乙個演算法題,不是很難,搜一下也有解決辦法,但是一般都是幾層for迴圈,試著寫了下
/**
* 給你一組字串 如 ,讓你輸出裡面出現次數最多且數值最大的乙個,出現幾次
* 優點:時間複雜度為o(n)
* 缺點:產生一些多餘的空間,如 6,7,8沒有的數也會分配乙個陣列空間,但是基本可以忽略
* 限制:需要預先知道最大的值是多少,或者說小於多少,這樣才好確定預先分配乙個陣列長度是多少
*/public static void method1();
int nums = new int[10];//0-9,此處若陣列中的最大值為 123,則陣列長度應為 >= 124
for (int i = 0; i < datas.length; i++)
int maxtime = 0;
for (int i = 0; i < nums.length; i++)
}system.out.println("最多的出現"+maxtime+"次");
int num = 0;
for (int i = 0; i < nums.length; i++)
}system.out.println("出現次數最多:"+maxtime+"次;且最大的數是:"+num);
}/**
* 給你一組字串 如 ,讓你輸出裡面出現次數最多且數值最大的乙個,出現幾次
* 優點:時間複雜度為o(n)
* 缺點:暫時沒發現
*/public static void method2();
mapmap = new hashmap();
for (int i = 0; i < datas.length; i++) else
}
int maxtime = 0;
int maxtime_num = 0;
setkeyset = map.keyset();
iteratorit = keyset.iterator();
while(it.hasnext())}}
system.out.println("出現次數最多:"+maxtime+"次;且最大的數是:"+maxtime_num);
}
列印:
0:01:2
2:33:1
4:15:3
6:07:0
8:09:0
最多的出現3次
出現次數最多:3次;且最大的數是:5
-----------
1:22:3
3:14:1
5:3出現次數最多:3次;且最大的數是:5
兩者的區別應該一下就看出來了
Android 乙個兩點觸控的案例
下面是乙個兩點觸控的案例 package com.zzj import import android.os.bundle import android.view.motionevent public class androidtestactivity extends activity public ...
關於Top n演算法問題的乙個思路
top n問題一直是面試熱點,舉個栗子,100000個無序數字,怎麼找出最大的前10個?如果用氣泡排序的話,就要比較100000 100000次,很顯然不行,這是最差的情況下,那麼最好的情況也要至少遍歷一遍,也就是100000次,所以,複雜度就是越接近十萬次越好。可以這樣 取前十個數,用插入排序從大...
移除乙個面上的節點 , 根據兩點間距
在乙個平面中有多個面互相緊湊拼接在一起,由於每乙個面上的節點數量不同,並且相鄰點距離過近,需要抽稀節點。需要把其中的節點刪除,在刪除後每乙個面還需要緊密相連。獲取每乙個面上的點,並且計算相鄰兩點之間的距離 距離大於容差 距離大於容差部分不操作 距離小於等於容差 距離小於等於容差部分進行操作,刪除其中...