当前位置: 首页 > 编程笔记 >

计算C ++中给定范围内的最小元素数

端木飞
2023-03-14
本文向大家介绍计算C ++中给定范围内的最小元素数,包括了计算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作为输入,并返回该范围内最小的计数。

  • 将Minimum = arr [l],最左边的元素和最小的初始计数初始化为0。

  • 现在,如果l <0并且r> = n则返回0,则提供了无效范围。

  • 开始从索引l-1遍历数组到r-1。如果arr [i] <smallest更新最小。

  • 再次,从a-1遍历到r-1,如果arr [i] ==最小,则递增计数。

  • 返回计数为所需结果。

  • 在main内部,显示当前计数结果。

示例

#include <bits/stdc++.h>
using namespace std;
//查找数字是否为质数的函数
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;
   L=3,R=4;
   count=countSmallest(arr,n,L,R);
   cout<<endl<<"给定范围内最小数量的计数:"<<count;
   return 0;
}

输出结果

如果我们运行上面的代码,它将生成以下输出-

给定范围内最小数量的计数:2
给定范围内最小数量的计数:2
 类似资料:
  • 本文向大家介绍在C ++中计算给定范围内的阶乘数,包括了在C ++中计算给定范围内的阶乘数的使用技巧和注意事项,需要的朋友参考一下 给定范围是从变量保存的整数值开始,比如说从开始直到变量结束,而任务是计算给定范围内可用的阶乘数的总数。 什么是阶乘数 数字的阶乘是通过将数字中的数字相乘,同时将数字的值减1来计算的。它由符号“!”表示 即0!,1!,2!,3!,5!,....等 0阶乘!和1!始终为1

  • 假设您有一个间隔列表,例如[(0 4),(1 3),(2 5),(2 6)]。此列表未排序。然后给您一个范围,如[1 5]。您必须返回适合范围内的间隔数。在这个问题中,它将返回2。((1 3)和(2 5)) 间隔列表保持不变,但我们最多得到100000个查询,每个查询由一个范围组成。对于每个范围查询,我们必须返回适合其中的间隔数。 在研究之后,我读到了间隔树。但是,您只能查询与任何给定范围重叠的间

  • 我正在尝试编写一个Heap排序方法,它只在传入方法的给定范围内执行排序。传入的范围是低和高,这些值对应于堆中的值,而不是堆的索引。例如,输入数组可能是:28 10 49 20 59 61 17,如果low=49,high=61,Heap排序后的结果数组将看起来像这样:28 10 20 49 59 61 17。范围之外的值保持不变。我已经有了一个工作的Heap排序方法,但我的问题是如何修改这个方法以

  • 本文向大家介绍在C ++中给定范围内x ^ 2 = 1(mod p)的解的计数,包括了在C ++中给定范围内x ^ 2 = 1(mod p)的解的计数的使用技巧和注意事项,需要的朋友参考一下 给定整数x和p。目的是找到等式-x 2 = 1(mod p)的解数,以使x处于[1,N]范围内。 我们将通过从1遍历到N并将每个数字作为x来检查(x * x)%p == 1。如果是,则增加计数。 让我们通过示

  • 给定一个正整数“l”和“r”。找到最小的数字“n”,这样l 本文:https://www.geeksforgeeks.org/smallest-number-whose-set-bits-maximum-given-range/给出具有最大设置位的最小数。但是我需要具有最小设置位的[l, r]中的最小数。 我们可以简单地在线性时间内做到这一点。但是,我正在寻找一种可以接受-- 时间复杂度:O(对数

  • 我参加了一个编程比赛,我无法解决问题,问题是: 给定一个n个整数的数组A,我需要计算给定范围内求逆的次数。提供一个整数m,它表示范围的数量,然后是m行,在每一行中给出两个整数li和ri。 我们必须只计算指定范围内的反转,即从li到ri(包括0)的反转(基于0的索引)。 如果 A[i] 两个元素 A[i] 和 A[j] 添加到反演中 反转是: 输入: 输出: 约束: 我知道在整个数组上计算O(nlo