요소 제거
nums
및 정수 val
가 주어지면 val
in-place 에서 nums
를 모두 제거합니다. 요소의 상대적 순서는 변경될 수 있습니다.일부 언어에서는 배열의 길이를 변경할 수 없기 때문에 결과를 배열의 첫 번째 부분에 배치해야 합니다
nums
. 더 공식적으로, 중복을 제거한 후 k
요소가 있는 경우 k
의 첫 번째 nums
요소가 최종 결과를 보유해야 합니다. 첫 번째k
요소 외에 무엇을 남기는지는 중요하지 않습니다.최종 결과를
k
의 첫 번째k
슬롯에 배치한 후 nums
를 반환합니다.다른 어레이에 추가 공간을 할당하지 마십시오. O(1) 추가 메모리로 입력 배열in-place을 수정하여 이를 수행해야 합니다.
커스텀 심사위원:
심사위원은 다음 코드를 사용하여 솔루션을 테스트합니다.
int[] 숫자 = [...];//입력 배열
정수 값 = ...;//제거할 값
int[] expectedNums = [...];//올바른 길이의 예상 답변입니다.
//val과 같은 값이 없는 상태로 정렬됩니다.
int k = removeElement(nums, val);//구현을 호출합니다.
주장 k == expectedNums.length;
정렬(숫자, 0, k);//nums의 첫 번째 k 요소를 정렬합니다.
for (int i = 0; i < actualLength; i++) {
assert nums[i] == expectedNums[i];
}
모든 어설션이 통과되면 솔루션이 수락됩니다.
예 1:
입력: 숫자 = [3,2,2,3], 값 = 3
출력: 2, 숫자 = [2,2,_,_]
설명: 함수는 nums의 처음 두 요소가 2인 k = 2를 반환해야 합니다.
반환된 k 뒤에 무엇을 남기는지는 중요하지 않습니다(따라서 밑줄입니다).
예 2:
입력: 숫자 = [0,1,2,2,3,0,4,2], 값 = 2
출력: 5, 숫자 = [0,1,4,0,3,_,_,_]
설명: 함수는 0, 0, 1, 3 및 4를 포함하는 nums의 처음 5개 요소와 함께 k = 5를 반환해야 합니다.
5개의 요소는 임의의 순서로 반환될 수 있습니다.
반환된 k 뒤에 무엇을 남기는지는 중요하지 않습니다(따라서 밑줄입니다).
제약:
0 <= nums.length <= 100
0 <= nums[i] <= 50
0 <= val <= 100
해결책:
class Solution:
def removeElement(self, nums: List[int], val: int) -> int:
i = 0
while i < len(nums):
if nums[i] == val:
nums.pop(i)
i -= 1
i = max(i + 1, 0)
Reference
이 문제에 관하여(요소 제거), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/theabbie/remove-element-1cde텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)