n개 숫자, n개 숫자의 모든 다른 숫자를 포괄하는 최소 간격을 찾으세요.
솔루션 아이디어:
AC 코드:
import java.util.HashMap; import java.util.HashSet; import java.util.Map; import java.util.Scanner; import java.util.Set; public class Main{ /** * @param args */ static int n; static Set<Integer> set = new HashSet<Integer>() ; static int a[]=new int[1000000+2]; static Map<Integer,Integer> map=new HashMap<Integer, Integer>(); public static void main(String[] args) { // TODO Auto-generated method stub Scanner scan=new Scanner(System.in); n=scan.nextInt(); for(int i = 0 ; i < n ; i++){ set.add(a[i] = scan.nextInt() ) ; } int size = set.size() ; //计算不同知识点的个数 int start = 0 , end = 0 , sum = 0 ; int res = n ; for(;;){ while(end < n && sum < size){ Integer cnt = map.get(a[end]) ; if(cnt == null){ sum++ ; map.put(a[end] , 1) ; } else map.put(a[end] , cnt+1) ; end++ ; } if(sum < size) break ; res = Math.min(end - start , res) ; int cnt = map.get(a[start]) ; if(cnt == 1){ map.remove(a[start]) ; sum-- ; } else map.put(a[start] , cnt-1) ; start++ ; } System.out.println(res) ; } }
위 내용은 Java 계산 예시 공유의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!