2017-09-04 1 views
-5

내 인터뷰에서 얻은 특정 문제를 바로 잡으려고합니다 (). 문제는 주파수가 가장 작은 요소 (정확히 f)를 찾는 것이 었습니다. 나는 그 해결책을 고안 한 것 같지만, 문제는 몇 가지 결함에 관한 것인데, 이것은 어떤 잘못된 출력을 생성한다. 나는 모든 것을 시도하고 코드를 다시 점검했지만 문제는 여전히 지속된다. 이후 나는 초보자 자바 프로그래밍에서 따라서 그것에 대해 많이 생각하지 않아 그래서 나를 도와주세요. 아래는 내가 뭘하려 :코드가 예상 출력을 생성하지 않습니다.

public static int smallestKFreq(int a[], int n, int f) 
    { 
     HashMap<Integer, Integer> map = new HashMap<Integer, Integer>(); 

     // Map is used to store the count of 
     // elements present in the array 
     for (int i = 0; i < n; i ++) 

      if (map.containsKey(a[i])) 
       map.put(a[i], m.get(a[i]) + 1); 

      else map.put(a[i], 1); 

     // Traverse the map and find minimum 
     // element with frequency f. 
     int res = Integer.MAX_VALUE; 
     Set<Integer> s = map.keySet(); 

     for (int temp : s) 
      if (map.get(temp) == f) 
       res = Math.min(res, temp); 

     return (res != Integer.MAX_VALUE)? res : 1; 
    } 
+2

* "코드 컴파일시 오류가 발생한다"... 나는이 문제를 해결해야한다고 생각이 시도

return (res !=Integer.MAX_VALUE)?res : -1;

해야한다 - 시간 오류! –

+0

다른 출력을 생성 중입니다 !!!'{1,2,3,2,2,1,3}'그러면 출력은'3'입니다 – BaijNR

+1

그래서 ... ** 아닙니다 ** 컴파일 타임 오류. –

답변

1

그래서 당신은 return 문 잘못 가지고있는 것처럼 보인다 질문을보고 좋아!

이 * *** 무엇 *** 컴파일

+0

@ mandy8055 고맙습니다. 작동했지만 제발 '-1'이 왜 작동하는지 알려주시겠습니까? – BaijNR

+0

@BaijNR 당신이 작성한 논리를 이해했다면, 최소값과 최대 빈도로 결과를 반환하므로 결과가 그 요소를 반환하거나 전혀 반환하지 않아야한다고 분명히 말합니다. – Mandy8055

관련 문제