반응형
문제
Given an integer array nums and an integer val, remove all occurrences of val in nums in-place. The relative order of the elements may be changed.
정수 배열 nums, 정수 타입의 변수 val가 있다.
배열 nums의 값 중에서 변수 val의 값과 일치하는 값을 뺀 배열의 길이를 구하시오.
예시
Input: nums = [3,2,2,3], val = 3
Output: 2, nums = [2,2,_,_]
답안
class Solution {
public int removeElement(int[] nums, int val) {
int result = 0;
for(int i = 0; i<nums.length; i++){
if(nums[i] != val){
nums[result] = nums[i];
result++;
}
}
return result;
}
}
배열에 있는 값과 변수의 값이 일치하면 넘어가고, 일치하지 않을 시 앞의 값을 뒤의 값으로 밀어버린다.
nums = [3,2,2,3], val = 3 일 경우의 예를 들어보자.
int i = 0일 경우 nums[0]의 값은 0 이므로 변수 val의 값과 동일하다. => i++
int i = 1일 경우 nums[1]의 값은 2 이므로 변수 val의 값과 다르다. 조건식 수행. => nums[0] = nums[1] / result++
result = 1
int i = 2일 경우 nums[2]의 값은 2 이므로 변수 val의 값과 다르다. 조건식 수행. => nums[1] = nums[2] / result++
result = 2
int i = 3일 경우 nums[3]의 값은 3이므로 변수 val의 값과 동일하다.
nums 배열의 길이는 4이므로 for문을 종료한다.
result 값을 리턴한다.
nums 배열에서 변수 val의 값과 동일한 값을 제거한 배열의 길이값이 리턴된다.
반응형