广联达 7.29笔试-第二题分享
题目描述:选择数组最小的一个重复值,删除该重复值,将它后面的值加*2,并向前移动,数组长度-1 输入1:5 2 2 1 1 1 输出1:4 2 1 输入2:5 5 5 5 5 4 输出2:20 4import java.util.HashMap; import java.util.Scanner; public class Main { public static void main(String []args){ /* 输入数据 */ Scanner scan=new Scanner(System.in); int n=scan.nextInt(); int []arr=new int [n]; for(int i=0;i<n;i++){ arr[i]=scan.nextInt(); } int len=arr.length; HashMap<Integer,Integer>map=new HashMap<>();//记录重复数据 int j=1; boolean b=true; while(b){ map.clear(); /* 将重复数据加入map中 */ for (int i = 0; i < len - 1; i++) { if (arr[i] != arr[i + 1]) { continue; } else { if (!map.containsValue(arr[i])) { map.put(j, arr[i]); j++; } } } /* 当map存有数据时,取最小的值 */ if (map.size()!=0){ int min = map.get(1); for (int i = 1; i <=map.size(); i++) { if (min > map.get(i)) { min = map.get(i); } } for (int i = 0; i < len-1; i++) { if (arr[i] == min) { arr[i + 1] = 2 * arr[i + 1]; for (int k = i; k < len-1 ; k++) { arr[k] = arr[k + 1]; } len=len-1; j=1; break; } } }else{ b=false; } } for(int i=0;i<len;i++){ System.out.println(arr[i]); } } }
#广联达##笔试题目#