찌꺼기 를 배 우 는 문제 풀이 여행 leetcode 문제 풀이 27.요소 제거

4622 단어 leetcode
배열 nums 와 값 val 을 드 립 니 다.모든 값 이 val 과 같은 요 소 를 제자리 에서 제거 하고 제거 한 배열 의 새 길 이 를 되 돌려 야 합 니 다.
추가 배열 공간 을 사용 하지 마 십시오.O(1)추가 공간 만 사용 하고 입력 배열 을 제자리 에서 수정 해 야 합 니 다.
원소 의 순 서 를 바 꿀 수 있다.너 는 배열 에서 새로운 길이 뒤의 요 소 를 초과 하 는 것 을 고려 할 필요 가 없다.
주어진 nums=[3,2,2,3],val=3,함 수 는 새로운 길이 2 를 되 돌려 야 하고 nums 의 앞의 두 요 소 는 모두 2 입 니 다.너 는 배열 에서 새로운 길이 뒤의 요 소 를 초과 하 는 것 을 고려 할 필요 가 없다.
주어진 nums=[0,1,2,2,3,0,4,2],val=2,함 수 는 새로운 길이 5 를 되 돌려 야 하고 nums 의 앞의 다섯 요 소 는 0,1,3,0,4 이다.이 다섯 개의 요 소 는 임의의 순서 가 될 수 있 음 을 주의 하 세 요.너 는 배열 에서 새로운 길이 뒤의 요 소 를 초과 하 는 것 을 고려 할 필요 가 없다.
설명:
왜 반환 수 치 는 정수 이지 만 출력 의 답 은 배열 입 니까?
입력 배열 은'참조'방식 으로 전 달 됩 니 다.이것 은 함수 에서 입력 배열 을 수정 하 는 것 이 호출 자 에 게 보 이 는 것 을 의미 합 니 다.
당신 은 내부 조작 이 다음 과 같다 고 상상 할 수 있 습 니 다.
//nums 는'인용'방식 으로 전 달 됩 니 다.즉,실제 복사 int len=removeElement(nums,val)를 하지 않 습 니 다.//함수 에서 입력 배열 을 수정 하 는 것 은 호출 자 에 게 보 입 니 다./함수 가 돌아 오 는 길이 에 따라 배열 의 이 길이 범위 내의 모든 요 소 를 출력 합 니 다.for (int i = 0; i < len; i++) { print(nums[i]); }
내 c+코드
class Solution {
public:
    int removeElement(vector<int>& nums, int val) {
        if(nums.empty())
            return nums.size();
        int i=nums.size()-1;
        for(;i>=0&&nums.empty()==false;i--){
            if(nums[i]==val){
                nums.erase(nums.begin()+i);
            }
        }
        return nums.size();
    }
};

어제 의 기초 가 있어 서 오늘 도 곧 해결 되 었 다.vector 를 배 워 서 지정 한 아래 표 시 된 요 소 를 삭제 하고 특정한 요 소 를 삭제 하 며 그 후의 모든 요 소 를 앞으로 이동 합 니 다.교체 기 는 변 하지 않 습 니 다.

좋은 웹페이지 즐겨찾기