제 알고리즘 소자 간단하고 신속한 제거하는 것이다

면책 조항 :이 문서는 블로거 원본입니다은 허용 블로거없이 복제 할 수 없다. https://blog.csdn.net/huanglinxiao/article/details/91527815

배열 nums과 값 발을 감안할 때, 당신은 모두 같은 값의 발을 제거하는 요소를 배치해야하고, 제거 후 배열의 새 길이를 반환합니다.

배열을위한 여분의 공간을 사용하지 마십시오, 당신은 장소에 입력 배열을 수정하고 사용 O (1) 여분의 공간의 조건을 완료해야합니다.

요소의 순서가 변경 될 수 있습니다. 당신은 뒤에 새로운 배열 길이의 요소를 넘어 고려해야 할 필요가 없습니다.

예 1 :

주어의 nums = [3,2,2,3], 발 = 3,

기능 (2)의 새로운 길이를 반환해야하고, 제 1 두 요소 nums 2이다.

당신은 뒤에 새로운 배열 길이의 요소를 넘어 고려해야 할 필요가 없습니다.
예 2 :

주어의 nums = [0,1,2,2,3,0,4,2], 발 = 2,

새로운 기능은 길이 (5)를 반환해야하고 처음 다섯 요소 nums은 0, 1, 3, 0, 4이다.

이 다섯 개 가지 요소는 임의의 순서가 될 수 있습니다.

당신은 뒤에 새로운 배열 길이의 요소를 넘어 고려해야 할 필요가 없습니다.

해결 방법 :

 func removeElement(_ nums: inout [Int], _ val: Int) -> Int {
        guard nums.count > 0 else {
            return 0
        }
        
        for (index,value) in nums.enumerated().reversed() {
            
            if(value == val){
                nums.remove(at: index)
                
            }
            
        }
        
        return nums.count;
    }

 

추천

출처blog.csdn.net/huanglinxiao/article/details/91527815