오늘은 LeetCode문제를 하나 풀어보았습니다. 문제에 대한 이야기 전에 LeetCode는 Leet Hub v3라는 확장프로그램을 통해서 Git Hub와 연동하여 사용 가능한 코딩 테스트 뿐 아니라 개발자가 이용하는데 이것 저것들을 도움이 되도록 하는 사이트입니다. 저는 주로 프로그래머스 문제를 풀지만, 외국 사이트인지라 영어로 되어 있어 가끔 영어 독해도 간간히 하면서 취미인 코딩 문제들을 풀어볼까 하면서 이용하곤 합니다.
난이도는 easy입니다^^ medium은 현재의 저에게는 욕심 같더라구요 ㅎㅎ
쉬운 문제이지만 해냈기에 올립니다^^
Given an integer array nums sorted in non-decreasing order, remove the duplicates in-place such that each unique element appears only once. The relative order of the elements should be kept the same. Then return the number of unique elements in nums.
Consider the number of unique elements of nums to be k, to get accepted, you need to do the following things:
Change the array nums such that the first k elements of nums contain the unique elements in the order they were present in nums initially. The remaining elements of nums are not important as well as the size of nums.
Return k.
Custom Judge:
The judge will test your solution with the following code:
int[] nums = [...]; // Input array
int[] expectedNums = [...]; // The expected answer with correct length
int k = removeDuplicates(nums); // Calls your implementation
assert k == expectedNums.length;
for (int i = 0; i < k; i++) {
assert nums[i] == expectedNums[i];
}
If all assertions pass, then your solution will be accepted.
Example 1:
Input: nums = [1,1,2]
Output: 2, nums = [1,2,_]
Explanation: Your function should return k = 2, with the first two elements of nums being 1 and 2 respectively.
It does not matter what you leave beyond the returned k (hence they are underscores).
Example 2:
Input: nums = [0,0,1,1,1,2,2,3,3,4]
Output: 5, nums = [0,1,2,3,4,,,,,_]
Explanation: Your function should return k = 5, with the first five elements of nums being 0, 1, 2, 3, and 4 respectively.
It does not matter what you leave beyond the returned k (hence they are underscores).
Constraints:
1 <= nums.length <= 3 * 104
-100 <= nums[i] <= 100
nums is sorted in non-decreasing order.
대충 문제들에 대한 input, output을 보면 알 수 있듯이 해당 정렬된 정수배열에서 겹치는 숫자들은 없애고 배열에 있는 숫자들을 내림차순으로 정렬을 하도록 하고 배열 내에 존재하는 정수들의 개수를 반환하는 문제입니다.
import java.util.*;
class Solution {
public int removeDuplicates(int[] nums) {
Arrays.sort(nums);
int num = 1;
int n = nums[0];
for(int i = 0;i < nums.length;i++){
if(n != nums[i]){
n=nums[i];
nums[num] = n;
num++;
}
}
return num;
}
}

굳!