1. 程式人生 > 其它 >歷屆真題 修改陣列【第十屆】【省賽】【研究生組】

歷屆真題 修改陣列【第十屆】【省賽】【研究生組】

題目:

 

 

 

  

按照字面意思暴力解法的 執行會超時 結果是30分 

程式碼如下:

import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        int[] arr = new int[n];
        
for (int i = 0; i < arr.length; i++) { arr[i] = sc.nextInt(); } for (int i = 0; i < arr.length; i++) { while(method(arr,arr[i],0,i)) { arr[i] ++; } System.out.print(arr[i] + " "); } } /** * 此方法用於判斷陣列arr裡面有沒有數num *
@author ouqi * @date 2022-03-26 17:43:39 * @param arr * @param num */ private static boolean method(int[] arr,int num,int start,int end) { Map<Integer,Integer> map = new HashMap<>(); for (int i = start; i < end; i++) { map.put(arr[i],
1); } for (Map.Entry<Integer,Integer> entry : map.entrySet()) { if(entry.getKey() == num) { return true; } } return false; } }