java 藍橋杯算法提高 出現次數最多的整數


思路:其實這道題不是太難,但是這個題太坑了,提交了好多次都不是100,后來才知道,一定一定要在輸入數組數據之前先判斷一下輸進去的n的范圍,一定一定要注意,否則就是跟我下面的圖片一樣的效果了,淚奔~

 

問題描述
  編寫一個程序,讀入一組整數,這組整數是按照從小到大的順序排列的,它們的個數N也是由用戶輸入的,最多不會超過20。然后程序將對這個數組進行統計,把出現次數最多的那個數組元素值打印出來。如果有兩個元素值出現的次數相同,即並列第一,那么只打印比較小的那個值。
  輸入格式:第一行是一個整數N,Nn<20;接下來有N行,每一行表示一個整數,並且按照從小到大的順序排列。
  輸出格式:輸出只有一行,即出現次數最多的那個元素值。
  輸入輸出樣例
  樣例輸入
  5
  100
  150
  150
  200
  250
  樣例輸出
  150

 

現在說說思路:一維數組a[]存放數據,然后比較相鄰的兩個數字是否相同,若相同用一個臨時變量保存一下次數,將次數+1;然后判斷臨時變量和最大次數的大小,若大於最大次數,將值賦給最大次數,將a[i]值賦給一個int值b。最后輸出int值b

 1 import java.util.Scanner;
 2 public class _90出現次數最多的整數 {
 3     public static void main(String[] args) {
 4         Scanner scanner = new Scanner(System.in);
 5         int n = scanner.nextInt();
 6         //一定要注意這里,預先進行判斷,一定一定要!!!!!!!!!!!
 7         if (n < 1 || n > 20) {
 8             return;
 9         }
10         int[] a = new int[n];
11         int temp = 1;//temp記錄出現的次數
12         int max = 1;
13         for (int i = 0; i < n; i++) {
14             a[i] = scanner.nextInt();
15         }
16         int b = a[0];//b記錄出現次數最多的那個數字
17         for (int i = 1; i < n; i++) {
18             if (a[i-1] == a[i] ) {
19                 temp ++;
20             }else{
21                 temp =1;
22                 }
23             if (temp >max) {
24                 max = temp;
25                 b = a[i];
26             }
27         }
28         System.out.println(b);
29     }
30 }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM