PAT甲级 The Dominant Color (技巧+java版map)

The Dominant Color 

链接:https://www.nowcoder.com/questionTerminal/0495013675774f008541ea371eb5af17
来源:牛客网

Behind the scenes in the computer's memory, color is always talked about as a series of 24 bits of information for each pixel. In an image, the color with the largest proportional area is called the dominant color. A strictly dominant color takes more than half of the total area. Now given an image of resolution M by N (for example, 800x600), you are supposed to point out the strictly dominant color.

输入描述:

Each input file contains one test case. For each case, the first line contains 2 positive numbers: M (<=800) and N (<=600) which are the resolutions of the image. Then N lines follow, each contains M digital colors in the range [0, 224). It is guaranteed that the strictly dominant color exists for each input image. All the numbers in a line are separated by a space.

输出描述:
For each test case, simply print the dominant color in a line.
示例1

输入

5 3
0 0 255 16777215 24
24 24 0 0 24
24 0 24 24 24

输出

24
题意:
输出给出的数中的众数
题解:技巧版
   因为答案数的个数一定会超过总数的一半 所以可以当当前数是答案数的时候,计数器加一,不是的时候,计数器减一,最后不能完全抵消的就是答案。
 1 import java.util.Scanner;
 2 public class Main {
 3     static int n,m;
 4     public static void main(String[] args) {
 5         Scanner cin = new Scanner(System.in);
 6         m = cin.nextInt();
 7         n = cin.nextInt();
 8         int ans = 0,cnt=0;
 9         for(int i=0;i<m;i++) {
10             for(int j=0;j<n;j++) {
11                 int x = cin.nextInt();
12                 if(cnt == 0) {
13                     ans = x;
14                     cnt = 1;
15                 }
16                 else {
17                     if(x == ans) {
18                         cnt++;
19                     }
20                     else {
21                         cnt--;
22                     }
23                 }
24             }
25         }
26         System.out.println(ans);
27     }
28 }
然后是java的map版
 1 import java.util.HashMap;
 2 import java.util.Iterator;
 3 import java.util.Map;
 4 import java.util.Map.Entry;
 5 import java.util.Scanner;
 6  
 7  
 8 public class Main{
 9     static int n,m;
10     public static void main(String[] args) {
11         Scanner cin = new Scanner(System.in);
12         m = cin.nextInt();
13         n = cin.nextInt();
14         int ans = 0,cnt=0;
15         int value = 0;int x;
16         Map<Integer, Integer> map = new HashMap<Integer,Integer>();
17         for(int i=0;i<m;i++) {
18             for(int j=0;j<n;j++) {
19                  x = cin.nextInt();
20                 if(map.get(x) == null) {
21                     value = 1;
22                 }
23                 else {
24                     value = (int)map.get(x);
25                     value++;
26                 }
27                 map.put(x, value);
28             }
29         }
30         Iterator<Map.Entry<Integer, Integer>> it = map.entrySet().iterator();
31         int max = 0,res=0;
32         while(it.hasNext()) {
33             Entry<Integer, Integer> entry = it.next();
34             if(entry.getValue()>max) {
35                 res = entry.getKey();
36                 max = entry.getValue();
37             }
38         }
39         System.out.println(res);
40     }
41 }
 
     
    
 
 

猜你喜欢

转载自www.cnblogs.com/1013star/p/10356007.html