📌  相关文章
📜  数组中的最大值,至少是其他元素的两倍

📅  最后修改于: 2021-04-26 07:06:14             🧑  作者: Mango

给定一个长度为n的整数数组。我们的任务是返回max元素的索引,如果它的索引至少是数组中其他每个数字的两倍。如果max元素不满足条件,则返回-1。
例子:

Input : arr = {3, 6, 1, 0}
Output : 1
Here, 6 is the largest integer, and for 
every other number in the array x, 6 is 
more than twice as big as x. The index of
value 6 is 1, so we return 1.

Input : arr = {1, 2, 3, 4}
Output : -1
4 isn't at least as big as twice the value
of 3, so we return -1.

方法:遍历数组以找到唯一的最大元素m ,并跟踪其索引maxIndex 。再次扫描阵列。如果找到m <2 * x的x!= m ,则应返回-1 。否则,我们应该返回maxIndex

C++
// CPP program for Maximum of
// the array which is at least
// twice of other elements of
// the array.
#include
using namespace std;
     
// Function to find the
// index of Max element
// that satisfies the
// condition
int findIndex(int arr[], int len) {
     
    // Finding index of
    // max of the array
    int maxIndex = 0;
    for (int i = 0; i < len; ++i)
        if (arr[i] > arr[maxIndex])
            maxIndex = i;
     
    // Returns -1 if the
    // max element is not
    // twice of the i-th
    // element.
    for (int i = 0; i < len; ++i)            
        if (maxIndex != i &&
            arr[maxIndex] < 2 * arr[i])
            return -1;
     
    return maxIndex;
}
     
// Driver function
int main(){
    int arr[] = {3, 6, 1, 0};
    int len = sizeof(arr) / sizeof(arr[0]);
     
    cout<<(findIndex(arr, len));
}
 
// This code is contributed by Smitha Dinesh Semwal


Java
// Java program for Maximum of the array
// which is at least twice of other elements
// of the array.
import java.util.*;
import java.lang.*;
 
class GfG {
     
    // Function to find the index of Max element
    // that satisfies the condition
    public static int findIndex(int[] arr) {       
         
        // Finding index of max of the array
        int maxIndex = 0;
        for (int i = 0; i < arr.length; ++i)
            if (arr[i] > arr[maxIndex])
                maxIndex = i;
         
        // Returns -1 if the max element is not
        // twice of the i-th element.       
        for (int i = 0; i < arr.length; ++i)            
            if (maxIndex != i && arr[maxIndex] < 2 * arr[i])
                return -1;
         
        return maxIndex;
    }
     
    // Driver function
    public static void main(String argc[]){
        int[] arr = new int[]{3, 6, 1, 0};
        System.out.println(findIndex(arr));
    }
}


Python3
# Python 3 program for Maximum of
# the array which is at least twice 
# of other elements of the array.
 
# Function to find the index of Max
# element that satisfies the condition
def findIndex(arr):
         
    # Finding index of max of the array
    maxIndex = 0
    for i in range(0,len(arr)):
        if (arr[i] > arr[maxIndex]):
            maxIndex = i
     
    # Returns -1 if the max element is not
    # twice of the i-th element.    
    for i in range(0,len(arr)):    
        if (maxIndex != i and
                arr[maxIndex] < (2 * arr[i])):
            return -1
         
    return maxIndex
     
     
# Driver code
arr = [3, 6, 1, 0]
print(findIndex(arr))
 
# This code is contributed by Smitha Dinesh Semwal


C#
// C# program for Maximum of the array
// which is at least twice of other elements
// of the array.
using System;
 
class GfG {
     
    // Function to find the index of Max element
    // that satisfies the condition
    public static int findIndex(int[] arr) {    
         
        // Finding index of max of the array
        int maxIndex = 0;
        for (int i = 0; i < arr.Length; ++i)
            if (arr[i] > arr[maxIndex])
                maxIndex = i;
         
        // Returns -1 if the max element is not
        // twice of the i-th element.
        for (int i = 0; i < arr.Length; ++i)        
            if (maxIndex != i && arr[maxIndex] < 2 * arr[i])
                return -1;
         
        return maxIndex;
    }
     
    // Driver function
    public static void Main()
    {
        int[] arr = new int[]{3, 6, 1, 0};
        Console.WriteLine(findIndex(arr));
    }
}
 
// This code is contributed by vt_m.


PHP
 $arr[$maxIndex])
            $maxIndex = $i;
     
    // Returns -1 if the
    // max element is not
    // twice of the i-th
    // element.
    for ($i = 0; $i < $len; ++$i)            
        if ($maxIndex != $i and
            $arr[$maxIndex] < 2 * $arr[$i])
            return -1;
     
    return $maxIndex;
}
     
// Driver Code
$arr = array(3, 6, 1, 0);
$len = count($arr);
 
echo findIndex($arr, $len);
 
// This code is contributed by anuj_67.
?>


Javascript


输出:

1

时间复杂度O(n)