给定一个数组arr [] 。任务是从arr []中查找具有最大设置位计数的元素。
例子:
Input: arr[] = {10, 100, 1000, 10000}
Output: 1000
Binary(10) = 1010 (2 set bits)
Binary(100) = 1100100 (3 set bits)
Binary(1000) = 1111101000 (6 set bits)
Binary(10000) = 10011100010000 (5 set bits)
Input: arr[] = {3, 2, 4, 7, 1, 10, 5, 8, 9, 6}
Output: 7
方法:遍历数组,找到当前元素中设置位的计数,然后找到设置位最大数量的元素。
下面是上述方法的实现:
C++
// C++ implementation of the approach
#include
using namespace std; ;
// Function to return the element from the array
// which has the maximum set bits
int maxBitElement(int arr[], int n)
{
// To store the required element and
// the maximum set bits so far
int num = 0, max = -1;
for (int i = 0; i < n; i++) {
// Count of set bits in
// the current element
int cnt = __builtin_popcount(arr[i]);
// Update the max
if (cnt > max) {
max = cnt;
num = arr[i];
}
}
return num;
}
// Driver code
int main()
{
int arr[] = { 3, 2, 4, 7, 1, 10, 5, 8, 9, 6 };
int n = sizeof(arr)/ sizeof(arr[0]) ;
cout << maxBitElement(arr, n) << endl;
return 0 ;
// This code is contributed by AnkitRai01
}
Java
// Java implementation of the approach
class GFG {
// Function to return the element from the array
// which has the maximum set bits
static int maxBitElement(int arr[], int n)
{
// To store the required element and
// the maximum set bits so far
int num = 0, max = -1;
for (int i = 0; i < n; i++) {
// Count of set bits in
// the current element
int cnt = Integer.bitCount(arr[i]);
// Update the max
if (cnt > max) {
max = cnt;
num = arr[i];
}
}
return num;
}
// Driver code
public static void main(String[] args)
{
int arr[] = { 3, 2, 4, 7, 1, 10, 5, 8, 9, 6 };
int n = arr.length;
System.out.print(maxBitElement(arr, n));
}
}
Python3
# Python 3 implementation of the approach
# Function to return the element from the array
# which has the maximum set bits
def maxBitElement(arr, n):
# To store the required element and
# the maximum set bits so far
num = 0
max = -1
for i in range(n):
# Count of set bits in
# the current element
cnt = bin(arr[i]).count('1')
# Update the max
if (cnt > max):
max = cnt
num = arr[i]
return num
# Driver code
if __name__ == '__main__':
arr = [3, 2, 4, 7, 1,
10, 5, 8, 9, 6]
n = len(arr)
print(maxBitElement(arr, n))
# This code is contributed by
# Surendra_Gangwar
C#
// C# implementation of the approach
using System;
class GFG
{
// Function to return the element from the array
// which has the maximum set bits
static int maxBitElement(int []arr, int n)
{
// To store the required element and
// the maximum set bits so far
int num = 0, max = -1;
for (int i = 0; i < n; i++)
{
// Count of set bits in
// the current element
int cnt = BitCount(arr[i]);
// Update the max
if (cnt > max)
{
max = cnt;
num = arr[i];
}
}
return num;
}
static int BitCount(int n)
{
int count = 0;
while (n != 0)
{
count++;
n &= (n - 1);
}
return count;
}
// Driver code
public static void Main(String[] args)
{
int []arr = { 3, 2, 4, 7, 1, 10, 5, 8, 9, 6 };
int n = arr.Length;
Console.Write(maxBitElement(arr, n));
}
}
// This code contributed by Rajput-Ji
PHP
$max)
{
$max = $cnt;
$num = $arr[$i];
}
}
return $num;
}
function BitCount($n)
{
$count = 0;
while ($n != 0)
{
$count++;
$n &= ($n - 1);
}
return $count;
}
// Driver code
$arr = array(3, 2, 4, 7, 1, 10, 5, 8, 9, 6 );
$n = count($arr);
echo(maxBitElement($arr, $n));
// This code contributed by PrinciRaj1992
?>
输出:
7