给定一个整数元素数组arr [] ,任务是用同一数组的范围系数替换数组中的最大元素。
范围系数:(最大–最小)/(最大+最小)
例子:
Input: arr[] = {15, 16, 10, 9, 6, 7, 17}
Output: 15 16 10 9 6 7 0.478261
Max = 17, Min = 6
Coefficient of Range = (Max – Min) / (Max + Min) = 11 / 23 = 0.478261
Input: arr[] = {5, 10, 15}
Output: 5 10 0.5
方法:从给定的数组中找到最大和最小元素,并计算范围系数coeff =(Max – Min)/(Max + Min),然后将最大元素替换为计算出的coeff 。数组更新后,打印更新后的数组的内容。
下面是上述方法的实现:
C++
// C++ implementation to replace maximum element
// by coefficient of range
#include
using namespace std;
// Utility function to print the contents of the array
void printArr(float arr[], int n)
{
for (int i = 0; i < n; i++)
cout << arr[i] << " ";
}
// Function to replace the maximum element from the array
// with the coefficient of range of the array
void replaceMax(float arr[], int n)
{
// Maximum element from the array
float max = *std::max_element(arr, arr + n);
// Minimum element from the array
float min = *std::min_element(arr, arr + n);
// Calculate the coefficient of range for the array
float range = max - min;
float coeffOfRange = range / (max + min);
// Assuming all the array elements are distinc
// Replace the maximum element with
// the coeffient of range of the array
for (int i = 0; i < n; i++) {
if (arr[i] == max) {
arr[i] = coeffOfRange;
break;
}
}
// Print the updated array
printArr(arr, n);
}
// Driver code
int main()
{
float arr[] = { 15, 16, 10, 9, 6, 7, 17 };
int n = sizeof(arr) / sizeof(arr[0]);
replaceMax(arr, n);
return 0;
}
Java
// Java implementation to replace maximum element
// by coefficient of range
import java.util.*;
class GFG
{
// Utility function to print the
// contents of the array
static void printArr(float arr[], int n)
{
for (int i = 0; i < n; i++)
System.out.print(arr[i] + " ");
}
// Function to replace the maximum
// element from the array with the
// coefficient of range of the array
static void replaceMax(float arr[], int n)
{
// Maximum element from the array
float max = arr[0];
for(int i = 0; i < n; i++)
{
if(arr[i] > max)
max = arr[i];
}
// Minimum element from the arra
float min = arr[0];
for(int i = 0; i < n; i++)
{
if(arr[i] < min)
min = arr[i];
}
// Calculate the coefficient of
// range for the array
float range = max - min;
float coeffOfRange = range / (max + min);
// Assuming all the array elements are distinc
// Replace the maximum element with
// the coeffient of range of the array
for (int i = 0; i < n; i++)
{
if (arr[i] == max)
{
arr[i] = coeffOfRange;
break;
}
}
// Print the updated array
printArr(arr, n);
}
// Driver code
public static void main(String args[])
{
float arr[] = { 15, 16, 10, 9, 6, 7, 17 };
int n = arr.length;
replaceMax(arr, n);
}
}
// This code is contributed by
// Sahil_Shelangia
Python3
# Python3 implementation to replace
# maximum element by coefficient of range
# Utility function to print the
# contents of the array
def printArr(arr, n) :
for i in range(n) :
print(arr[i], end = " ")
# Function to replace the maximum element
# from the array with the coefficient of
# range of the array
def replaceMax(arr, n) :
# Maximum element from the array
max_element = max(arr)
# Minimum element from the array
min_element = min(arr)
# Calculate the coefficient of
# range for the array
ranges = max_element - min_element
coeffOfRange = ranges / (max_element + min_element)
# Assuming all the array elements are
# distinct. Replace the maximum element
# with the coeffient of range of the array
for i in range(n) :
if (arr[i] == max_element) :
arr[i] = coeffOfRange
break
# Print the updated array
printArr(arr, n)
# Driver code
if __name__ == "__main__" :
arr = [ 15, 16, 10, 9, 6, 7, 17 ]
n = len(arr)
replaceMax(arr, n)
# This code is contributed by Ryuga
C#
// C# implementation to replace maximum element
// by coefficient of range
using System;
class GFG
{
// Utility function to print the
// contents of the array
static void printArr(float []arr, int n)
{
for (int i = 0; i < n; i++)
Console.Write(arr[i] + " ");
}
// Function to replace the maximum
// element from the array with the
// coefficient of range of the array
static void replaceMax(float []arr, int n)
{
// Maximum element from the array
float max = arr[0];
for(int i = 0; i < n; i++)
{
if(arr[i] > max)
max = arr[i];
}
// Minimum element from the arra
float min = arr[0];
for(int i = 0; i < n; i++)
{
if(arr[i] < min)
min = arr[i];
}
// Calculate the coefficient of
// range for the array
float range = max - min;
float coeffOfRange = range / (max + min);
// Assuming all the array elements are distinc
// Replace the maximum element with
// the coeffient of range of the array
for (int i = 0; i < n; i++)
{
if (arr[i] == max)
{
arr[i] = coeffOfRange;
break;
}
}
// Print the updated array
printArr(arr, n);
}
// Driver code
public static void Main()
{
float []arr = { 15, 16, 10, 9, 6, 7, 17 };
int n = arr.Length;
replaceMax(arr, n);
}
}
// This code is contributed by
// shs..
PHP
输出:
15 16 10 9 6 7 0.478261
时间复杂度: O(n)