[LeetCode] 27. Remove Element

orca·2023년 8월 24일
0

problem

목록 보기
5/28

https://leetcode.com/problems/remove-element

개요

  1. 정수 배열 nums와 정수 val이 주어진다.
  2. nums에서 val을 제거하고, val이 제거된 nums 배열의 길이 k를 반환해라.
    • nums 배열을 수정
    • nums 배열의 인덱스 k-1 이후는 어떤 값이 들어있어도 검사하지 않는다.

문제 해결 아이디어

nums 배열을 검사하며 동시에 nums 배열을 수정해야 한다.
➡️ 당연히 nums 배열은 앞에서부터 순차적으로 수정된다.

🧐 nums가 어떤 인덱스까지 수정되었는지 기록하자

의사 코드

  1. nums가 어떤 인덱스까지 수정되었는지 기록하는 정수 k를 선언한다.
  2. nums를 돈다.
  3. nums의 원소를 val과 비교한다.
    3-1. nums의 원소가 val과 다르다.
    3-1-1. nums[k]에 nums의 원소를 할당한다.
    3-1-2. k의 값을 1 증가시킨다.
  4. k를 리턴한다.
k = 0
for(i=0 to nums 끝까지){
	if(nums[i] != val){
    	nums[k] = nums[i]
        k++
    }
}
return k

결과

전체 코드 github 링크

다른 풀이

public int removeElement(int[] nums, int val) {
        
        int c = 0;
        for(int i = 0; i < nums.length; i++){
            if(nums[i] != val){
                nums[c] = nums[i];
                c++; 
            }
        }
        return c;
    }

대부분 나의 풀이와 동일한 논리 구조로 푼 것 같다.

0개의 댓글