Search
Duplicate
📒

[LeetCode Top 150] 01-2. Remove Element - Easy

상태
완료
수업
Algorithm Solving
주제
LeetCode Top Interview 150
4 more properties
참고

문제해설

NOTE
입력으로 정수배열과 제거 해야하는 정수 값이 주어진다.
출력으로 기존 배열의 길이 - 제거된 정수 개수를 줘야한다.

문제 로직고민

NOTE
기존 배열을 순환하면서 배열과, 제거되는 정수를 판단한다.
int 제거된 값 = 0; int 배열 인덱스 = 0 for(int i=0; i < 배열길이; i++{ if(제거하는 값) 제거된 값++; else 기존배열[배열 인덱스++] 기존배열[i]; }
Java
복사
순환한 값이 제거해야하는 경우에는 제거된 정수값을 증가시킨다.
순환한 값이 제거해야하는 경우가 아닌경우에는 해당 idx값을 변형시킨다.

작성코드

NOTE
class Solution { public int removeElement(int[] nums, int val) { int k = 0; int idx = 0; for(int i = 0; i< nums.length; i++){ if(nums[i] == val) k++; else nums[idx++] = nums[i]; } return nums.length - k; } }
Java
복사

정답코드

NOTE
class Solution { public int removeElement(int[] nums, int val) { int s = 0; int e = nums.length-1; while(s<=e){ if(nums[e] == val){ e--; } else{ if(nums[s] == val){ int temp = nums[e]; nums[e] = nums[s]; nums[s] = temp; s++; e--; } else{ s++; } } } return e+1; } }
Java
복사
메모리를 가장 적게 사용하는 코드
대략 3.2MB 메모리를 덜 사용하는 코드인데, 왜 덜 사용하는지는 모르겠다.