C++中给定范围内最小元素的个数
给定一个大小为 N 的整数数组。变量 L 和 R 定义了 1 到 N 之间的范围。目标是找到在 L 和 R 范围内(L>=1 且 R<=N)的最小元素的个数。
我们将通过遍历 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[] 内的范围。count 存储 L 和 R 范围内最小值的个数。
函数 countSmallest(int arr[],int n,int l, int r) 接收一个数组、它的长度、L 和 R 作为输入,并返回范围内最小值的个数。
初始化 smallest=arr[l],即最左边的元素,并将最小值的初始计数设置为 0。
如果 l<0 且 r>=n,则返回 0,表示提供的范围无效。
从索引 l-1 到 r-1 开始遍历数组。如果 arr[i]
再次遍历从 l-1 到 r-1 的数组,如果 arr[i]==smallest,则递增 count。
返回 count 作为所需结果。
在 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