给定一个长度为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
时间复杂度: