https://leetcode.com/problems/distribute-candies/
-
처음 생각해낸 방법은
두개의 priority qeue 를 생성해서 하나는 asc, 하는 desc 로 생성
sister 가 asc에서 한개씩 빼고, brother가 desc에서 큰 순으로 하나씩 빼다보면 최대 개수가 나올것 같다고 생각이 들었음. -
코딩하기 귀찮아서 다른 방법 생각해보니 유니크한 사탕의 종류의 개수에 따라서 간단히 풀수 있었음.
-
O(N)
-
종류개수 > length/2 return length/2, else 종류개수
Runtime: 14 ms, faster than 96.34% of Java online submissions for Distribute Candies.
class Solution {
public int distributeCandies(int[] candies) {
int [] map = new int[200001];
int kinds = 0;
for(int i=0; i<candies.length; i++){
if(map[candies[i]+100000] == 0){
kinds ++;
}
map[candies[i]+100000]++;
}
int maxLen = candies.length/2 ;
return kinds <= maxLen ? kinds : maxLen;
}
}
No comments:
Post a Comment