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

更新于:2020年8月29日

233 次浏览

开启您的职业生涯

完成课程获得认证

开始学习
广告