[プログラマー]宝石を買う
import java.util.*;
class Solution {
public int[] solution(String[] gems) {
int[] answer = new int[2];
HashMap<String,Integer> map = new HashMap<>();
HashMap<String,Integer> map2 = new HashMap<>();
int size =0;
int n = gems.length;
for(int i=0; i<n; i++){
map2.put(gems[i],0);
}
size = map.size();
int m =0;
int temp = Integer.MAX_VALUE;
int start =0;
LinkedList<String> list = new LinkedList<>();
for(int i=0; i<n; i++){
if(m>=size){
int gemCnt = map2.get(gems[i]);
map2.put(gems[i], gemCnt+1);
list.offer(gems[i++]);
}
while(m<size){
int gemCnt = map2.get(gems[i]);
if(gemCnt==0){
m++;
map2.put(gems[i],1);
}else{
map2.put(gems[i], gemCnt+1);
}
list.offer(gems[i++]);
if(i==n) break;
}
while(map2.get(list.get(0))>1){
map2.put(list.get(0), map2.get(list.get(0))-1);
list.poll();
start++;
}
if(temp>list.size()){
temp = list.size();
answer[0] = start+1;
answer[1] = i;
}
i--;
}
return answer;
}
}
Reference
この問題について([プログラマー]宝石を買う), 我々は、より多くの情報をここで見つけました https://velog.io/@away0419/프로그래머스-보석쇼핑テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol