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

计算元素,以便在C ++中恰好有X个元素的值大于或等于X

锺离韬
2023-03-14
本文向大家介绍计算元素,以便在C ++中恰好有X个元素的值大于或等于X,包括了计算元素,以便在C ++中恰好有X个元素的值大于或等于X的使用技巧和注意事项,需要的朋友参考一下

给我们一个整数数组。目标是找到满足以下条件的数组中元素的数量-

对于每个元素,数组中存在的大于或等于它的数字计数应完全等于它。排除元素本身。如果element是X,则数组具有正好X个数字,这些数字大于或等于X。(不包括元素)。

输入值

Arr[]= { 0,1,2,3,4,9,8 }

输出结果

Elements exactly greater than equal to itself : 1

解释-元素和数字> =

Arr[0]: 6 elements are >= 0 , 6!=0 count=0
Arr[1]: 5 elements are >= 1 , 5!=1 count=0
Arr[2]: 4 elements are >= 2 , 4!=2 count=0
Arr[3]: 3 elements are >= 3 , 3==3 count=1
Arr[4]: 2 elements are >= 4 , 2!=4 count=1
Arr[4]: 0 elements are >= 9 , 0!=9 count=1
Arr[6]: 1 element is >= 8 , 1!=8 count=1

3是唯一使3个元素> =正确的元素(4,8,9)

输入值

Arr[]= { 1,1,1,1,1 }

输出结果

Elements exactly greater than equal to itself : 0

说明-所有元素均相等且计数!= 1

以下程序中使用的方法如下

  • 整数数组Arr []用于存储整数。

  • 整数“ n”存储数组的长度。

  • 函数findcount(int arr [],int n)将一个数组及其大小作为输入,并返回如前面 的X的数字计数。

  • 可变计数用于存储像X这样的数字的计数。

  • 初始化ans = 0,它将计算此类数字。

  • 使用for循环从第一个元素(index = 0)开始遍历数组。

  • 在for循环中再次从起始元素开始遍历,如果任何arr [j]> = arr [j]使得i!= j,则增加计数。

  • 在j循环结束后,将count与arr [i]进行比较。如果count == arr [i](恰好arr [i]元素> = arr [i],则增加答案'ans'

  • 在两个for循环结束之后,返回以“ ans”表示的结果。

示例

#include <iostream>
#include <algorithm>
using namespace std;
int findcount(int arr[],int n){
   sort(arr,arr+n);
   int count=0;
   int ans=0;
   for(int i=0;i<n;i++){
      count=0;
      for(int j=0;j<n;j++){
         if(arr[j]>=arr[i] && i!=j)
            count++;
      }
      if(count==arr[i])
         ans++;
   }
   return ans;
}
int main(){
   int Arr[]= { 0,1,2,3,4,5,6 };
   int k=7;
   int n=sizeof(Arr)/sizeof(Arr[0]);
   std::cout<<"Elements exactly greater than equal to itself : "<<findcount(Arr,n);
   return 0;
}

输出结果

Elements exactly greater than equal to itself : 1
 类似资料:
  • 给定任何自然数数组,例如:[2,1,2,3]查找数组是否可以转换为Max数组(打印-“是”)或如果不能(打印-“否”) 使其成为最大数组 - 将数组的每个元素转换为等于其最大元素。在上面的例子中,它将是[3,3,3,3],但是通过遵循这些规则 - 一次将任何两个元素增加1(正好是2个元素。不能一次增加一个或多个元素) 多次执行此操作,直到将每个元素转换为最大元素(如果可能,请打印“YES”,否则打

  • 给定一个有N个整数的数组A,我们需要找到子数组的最高和,使得每个元素小于或等于给定的整数X 示例:设 N=8 且数组为 [3 2 2 3 1 1 1 3] 。现在,如果 x=2,那么如果我们考虑 1 个基本索引,则通过求和 A[2] A[3] 来回答 4。如何在 O(N) 或 O(N*logN) 中执行此问题 目前,我通过检查每个可能的子阵列来采用O(N^2)方法。如何降低复杂性?

  • 本文向大家介绍计算C ++中排序后的旋转数组中小于或等于给定值的元素,包括了计算C ++中排序后的旋转数组中小于或等于给定值的元素的使用技巧和注意事项,需要的朋友参考一下 给我们一个整数数组。该数组是已排序的旋转数组。目的是找到等于或小于给定数K的数组中的元素数。 方法是遍历整个数组并计算小于或等于K的元素。 输入值 输出结果 说明-元素<= 4是1,2,3,4 Count = 4 输入值 输出结

  • 假设您希望在排序数组中查找值1的第一个匹配项。对于小数组(二进制搜索之类的东西没有回报),您可以通过简单地计算小于该值的值的数量来实现这一点:结果就是您要查找的索引。 在x86中,您可以使用(加进位)来实现该方法的高效无分支2实现(中的起始指针中的长度和要在中搜索的值): 答案以rax结束。如果你展开它(或者如果你有一个固定的、已知的输入大小),只有cmp;adc指令对被重复,因此每次比较的开销接

  • 本文向大家介绍在C ++中,在频率大于或等于n / 2的排序数组中查找元素。,包括了在C ++中,在频率大于或等于n / 2的排序数组中查找元素。的使用技巧和注意事项,需要的朋友参考一下 考虑我们有一个大小为n的数组。该数组已排序。有一个元素的频率大于或等于n / 2,其中n是数组中元素的数量。因此,如果数组类似于[3,4,5,5,5],则输出将为5。 如果我们仔细观察这些类型的数组,我们可以很容

  • } 嗨,我已经在这方面工作了很长时间,我知道这似乎很容易,但我就是不能理解它....我只能更改getOverM()方法中的代码,我不能编辑其他方法。我想使用if语句,但我只是不知道如何编写一个代码来显示与m相比下一个最大的索引数。 插入GetOverm方法主体的代码。