找“水王”
編程思路:
? ? ? 水王是發(fā)帖最多的人,如果用傳統(tǒng)的思想來(lái)遍歷去計(jì)數(shù),計(jì)算每個(gè)id出現(xiàn)多少次再去比較固然能算出來(lái),可是時(shí)間復(fù)雜度高。我們轉(zhuǎn)換思路重新分析這道題。
水王的特點(diǎn)為:(1)每貼必回(2)水王的發(fā)貼數(shù)超過(guò)總貼數(shù)的一半;
? ? 從頭開(kāi)始遍歷,對(duì)可能成為水王的人的id進(jìn)行計(jì)數(shù),如果后邊的跟他相同就加一,不同就減一,如果為0就重新選擇水王。因?yàn)樗醢l(fā)的帖子大于一半,所以剩下的就是水王。
import java.util.Scanner; /** 尋找水王*/ public class ShuiWang {public static void main(String[] args) {int[] a = null;Scanner sc = new Scanner(System.in);System.out.println("帖子總個(gè)數(shù):");int sum = sc.nextInt();a = new int[sum];System.out.println("輸入每個(gè)帖子的作者:");for(int i = 0;i < sum;i++){a[i] = sc.nextInt();}sc.close();int n = 0;int id = -1;for(int i=0;i<a.length;i++){if(n==0){id=a[i];n=2;}else{if(id==a[i]){++n;}else{--n;}}}System.out.println("水王的ID是 : " + id);}}程序執(zhí)行結(jié)果:
?
?
總結(jié):
要學(xué)會(huì)分析問(wèn)題,發(fā)現(xiàn)“水王”的特點(diǎn),轉(zhuǎn)換思考方式。
沒(méi)有實(shí)現(xiàn)隨機(jī)生成發(fā)帖的id。
轉(zhuǎn)載于:https://www.cnblogs.com/bai123/p/7010673.html
與50位技術(shù)專家面對(duì)面20年技術(shù)見(jiàn)證,附贈(zèng)技術(shù)全景圖總結(jié)
- 上一篇: WBS分析
- 下一篇: jmeter设置全局变量