LeetCode 알고리즘 27:자바 제거 요소
1578 단어 LeetCode
추가 배열 공간 을 사용 하지 마 십시오.입력 배열 을 제자리 에서 수정 하고 O(1)추가 공간 을 사용 하 는 조건 에서 완성 해 야 합 니 다.
원소 의 순 서 를 바 꿀 수 있다.너 는 배열 에서 새로운 길이 뒤의 요 소 를 초과 하 는 것 을 고려 할 필요 가 없다.
예제 1:주어진 nums=[3,2,2,3],val=3,함 수 는 새로운 길이 2 를 되 돌려 야 하고 nums 의 앞의 두 요 소 는 모두 2 이다.너 는 배열 에서 새로운 길이 뒤의 요 소 를 초과 하 는 것 을 고려 할 필요 가 없다.
예 2:주어진 nums=[0,1,2,2,3,0,4,2],val=2,함 수 는 새로운 길이 5 를 되 돌려 야 하고 nums 중의 다섯 가지 요 소 는 0,1,3,0,4 이다.이 다섯 개의 요 소 는 임의의 순서 가 될 수 있 음 을 주의 하 세 요.너 는 배열 에서 새로운 길이 뒤의 요 소 를 초과 하 는 것 을 고려 할 필요 가 없다.
사고방식 공간의 복잡 도 는 O(1)이다.즉,체인 테이블 을 전체적으로 복제 할 수 없다.그래서 하나의 포인터 와 같은 조작 이 필요 합 니 다.이전 을 뒤로 옮 겨 다 니 는 것 을 고려 하여 제거 규칙 에 맞 는 데 이 터 를 배열 의 마지막 부분 으로 바 꿉 니 다.앞 은 뒤로 밀고,뒤 는 앞으로 밀고.
코드
public class _27RemoveElement{
public int removeElement(int[] nums, int val){
if(nums.length ==0) return 0;
int i = 0;
int j = nums.length-1;
while(i!=j){
if (nums[i]==val) {
swap(nums,i,j);
j--;
}else{
i++;
}
}
if (nums[i]==val) {
return i;
}else{
return i+1;
}
}
private void swap(int[] nums,int i,int j){
int tmp = nums[i];
nums[i] = nums[j];
nums[j] = tmp;
}
public static void main(String[] arg){
_27RemoveElement RemoveElement = new _27RemoveElement();
int[] nums1 = {0,1,2,2,3,0,4,2};
int value1 = 2;
int[] nums2 = {2,2};
int value2 = 2;
System.out.println(RemoveElement.removeElement(nums1,value1));
System.out.println(RemoveElement.removeElement(nums2,value2));
}
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
python 문자열 입력으로 모든 유효한 IP 주소 생성(LeetCode 93번 문제)이 문제의 공식 난이도는 Medium으로 좋아요 1296, 반대 505, 통과율 35.4%를 눌렀다.각 항목의 지표로 말하자면 보기에는 약간 규범에 맞는 것 같지만, 실제로도 확실히 그렇다.이 문제의 해법과 의도는 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.