이 글에서는 낮음부터 높음까지 주어진 범위에서 숫자를 반복하지 않고 양의 정수 수를 계산하는 다양한 방법에 대해 설명합니다. 첫 번째 방법은 범위의 모든 숫자를 반복하고 중복된 숫자가 포함되어 있는지 확인하는 무차별 대입 방법입니다. 두 번째 방법에서는 접두사 배열을 사용하여 필요한 개수를 계산하고 마지막 방법에서는 동적 프로그래밍의 메모리 개념을 사용하여 필요한 결과를 얻습니다.
문제 설명: 낮은 숫자부터 높은 숫자까지 두 개의 숫자가 주어지면 숫자에 중복된 숫자가 포함되지 않도록 낮은 숫자와 높은 숫자 사이의 모든 숫자의 개수를 찾아야 합니다.
이것은 무차별 방식입니다. 낮은 숫자부터 높은 숫자까지 모든 숫자를 반복하고 중복된 숫자가 포함되어 있는지 확인합니다. 이것이 우리 문제에 대한 가장 간단한 해결책입니다.
동일한 코드 솔루션은 다음과 같습니다.
으아아아이 방법에서는 접두사 배열을 사용하여 인덱스 "반복자"까지 중복되지 않은 정수 개수를 저장합니다.
이 방법과 관련된 단계는 다음과 같습니다.
숫자에 중복된 숫자가 있는지 확인하는 함수를 정의하세요.
접두사 배열을 0으로 초기화하세요. 접두사 배열은 지정된 인덱스 "반복자"까지 유효 자릿수를 저장합니다.
낮은 숫자부터 높은 숫자까지 반복하면서 중복된 숫자가 있는지 확인하세요. 중복된 숫자가 없으면 해당 인덱스의 접두사 배열에 1을 추가합니다.
접두사 배열의 접두사 합계를 계산합니다. 접두사 합계는 범위 내 총 유효 자릿수를 제공합니다.
접두사 합계를 반환합니다.
이 접근 방식의 코드는 다음과 같습니다. -
으아아아시간 복잡도 - O(nlogn), 여기서 n은 (높음 - 낮음)입니다.
공간 복잡성 - O(n)
이 접근 방식에서는 문제를 하위 문제로 분해하고 하위 문제의 결과를 메모리 테이블에 저장합니다
프로그램은 주어진 범위, 즉 반복되는 숫자가 없는 숫자에서 유효 숫자의 총 개수를 계산합니다. 이는 dp("iterator",used) 함수가 "iterator" 위치에서 시작하여 "used" 숫자로 구성될 수 있는 유효 자릿수를 반환하는 동적 프로그래밍 접근 방식을 사용합니다.
dp 함수의 결과를 저장하기 위해 memtable을 사용하고 숫자 범위를 반복하여 각 숫자에 대해 dp 함수를 호출합니다. 모든 시작 "반복자"에 대한 dp 함수 결과의 합은 범위 내 유효 숫자의 총 개수입니다.
결론 - 이 코드에서는 낮은 것부터 높은 것까지의 범위에서 숫자를 반복하지 않고 전체 숫자를 계산하는 세 가지 방법을 논의했습니다.
위 내용은 중복되지 않은 범위의 총 숫자 수의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!