17m | 18ms | 44.92MB
class Solution {
public int removeDuplicates(int[] nums) {
List<Integer> list = new ArrayList<Integer>();
for(int val : nums){
if(!list.contains(val)){
list.add(val);
}
}
int k = list.size();
for(int i=0; i<nums.length; i++){
if(i<k){
nums[i]=list.get(i);
}else{
nums[i]=0;
}
}
return k;
}
}
list.contains(val) - O(n)
class Solution {
public int removeDuplicates(int[] nums) {
if (nums.length == 0) return 0;
int k = 1; // 고유한 요소 개수
for (int i = 1; i < nums.length; i++) {
if (nums[i] != nums[k - 1]) {
nums[k] = nums[i];
k++;
}
}
return k;
}
}
| 항목 | 기존 코드 | 최적화 코드 |
|---|---|---|
| 시간복잡도 | O(n²) | O(n) |
| 공간복잡도 | O(n) | O(1) |
| 런타임 | 18ms | 1ms |