크기 N의 정수 배열이 제공됩니다. 변수 L과 R은 1과 N 사이의 범위를 정의합니다. 목표는 범위 L에 있는 가장 작은 요소의 수를 찾고 L>=1이고 R<=N인 R
-
L과 R 범위에 있는 요소를 탐색하고 가장 작은 요소를 찾아 이를 수행합니다.
-
다시, 범위 L 및 R의 요소를 순회하고 1단계에서 계산된 가장 작은 요소와 동일한 요소가 있으면 카운트를 증가시킵니다.
예를 들어 이해합시다.
입력 - arr[]={ 1,2,3,0,3,2,0,1 }, N=8, L=2, R=5
출력 − 범위에서 가장 작은 수 − 1
설명 -
범위 L(1) ~ R(5)의 요소는 arr[1] ~ arr[4]입니다. { 2,3,0,3 }. 가장 작은 값은 0입니다. 0의 개수는 1입니다.
입력 - arr[]={ 1,2,3,0,3,2,0,1 }, N=8, L=3, R=8
출력 − 범위에서 가장 작은 수 − 2
설명 -
범위 L(3) ~ R(8)의 요소는 arr[2] ~ arr[7]입니다. { 3,0,3,2,0,1 }. 가장 작은 값은 0입니다. 0의 개수는 2입니다.
아래 프로그램에서 사용된 접근 방식은 다음과 같습니다.
-
임의의 숫자로 초기화된 정수 배열 arr[]을 사용합니다.
-
정수 L과 R은 arr[] 안의 범위를 나타냅니다. 개수는 L 및 R 범위에서 가장 작은 개수를 저장합니다.
-
countSmallest(int arr[],int n,int l, int r) 함수는 배열, 길이, L 및 R을 입력으로 받아 범위에서 가장 작은 개수를 반환합니다.
-
가장 왼쪽에 있는 element=arr[l]을 초기화하고 가장 작은 것의 초기 개수를 0으로 초기화합니다.
-
이제 l<0 및 r>=n이면 0을 반환하고 잘못된 범위가 제공됩니다.
-
인덱스 l-1에서 r-1까지 배열 탐색을 시작합니다. arr[i]
인 경우 가장 작게 업데이트합니다. -
다시, 배열을 l-1에서 r-1로 순회합니다. arr[i]==smallest이면 카운트를 증가시킵니다.
-
원하는 결과로 카운트를 반환합니다.
-
main 내부에서 count에 있는 결과를 표시합니다.
예시
#include <bits/stdc++.h> using namespace std; // Function to find if number is prime int countSmallest(int arr[],int n,int l, int r){ int smallest=arr[l]; int count=0; if(l<0 && r>=n) return 0; for(int i=l-1;i<r;i++){ if(arr[i]<=smallest){ smallest=arr[i]; } } for(int i=l-1;i<r;i++){ if(arr[i]==smallest){ ++count; } } return count; } int main(){ int arr[] = { 3,2,1,1,2,3 }; int n = 6; int L,R; int count=0; L=1,R=5; count=countSmallest(arr,n,L,R); cout<<endl<<"Count of number of smallest in given range:"<<count; L=3,R=4; count=countSmallest(arr,n,L,R); cout<<endl<<"Count of number of smallest in given range:"<<count; return 0; }
출력
위의 코드를 실행하면 다음 출력이 생성됩니다 -
Count of number of smallest in given range:2 Count of number of smallest in given range:2