var arr = [ 1, 3, 2, 3, 6, 2 ];
var maxIndex = arr.indexOf( Math.max.apply(null, arr)); // 4, считается от 0
- Math.max() возвращает наибольшее значение из аргументов.
- чтобы передать массив вместо списка, используется apply()
- получив само наибольшее значение, остаётся найти его индекс в массиве через метод массива indexOf().
Не очень эффективно, т.к. фактически массив перебирается дважды: в поиске максимума и в поиске индекса. Можно сделать за один проход, запоминая вместе с найденным максимальным значением его позицию:
var arr = [ 1, 3, 2, 3, 6, 2 ];
function index_max(arr) {
var i, maxV, maxP;
for( i = 0; i < arr.length; i++) {
if( typeof maxV === "undefined" || arr[i] > maxV ) {
maxV = arr[i];
maxP = i;
}
}
return maxP;
}
index_max(arr) // 4
17 авг. 2022 г.
читать 1 мин
Вы можете использовать следующий синтаксис, чтобы найти индекс максимального значения списка в Python:
#find max value in list
max_value = max(list_name)
#find index of max value in list
max_index = list_name. index (max_value)
В следующих примерах показано, как использовать этот синтаксис на практике.
Пример 1: поиск индекса максимального значения в списке
Следующий код показывает, как найти максимальное значение в списке вместе с индексом максимального значения:
#define list of numbers
x = [9, 3, 22, 7, 15, 16, 8, 8, 5, 2]
#find max value in list
max_value = max(x)
#find index of max value in list
max_index = x. index (max_value)
#display max value
print(max_value)
22
#display index of max value
print(max_index)
2
Максимальное значение в списке равно 22 , и мы видим, что оно расположено в списке со значением индекса 2 .
Примечание. В Python значения индекса начинаются с 0.
Пример 2: поиск индекса максимального значения в списке со связями
В следующем коде показано, как найти максимальное значение в списке вместе с индексом максимального значения, когда имеется несколько максимальных значений.
#define list of numbers with multiple max values
x = [9, 3, 22, 7, 15, 16, 8, 8, 5, 22]
#find max value in list
max_value = max(x)
#find indices of max values in list
indices = [index for index, val in enumerate(x) if val == max_value]
#display max value
print(max_value)
22
#display indices of max value
print(indices)
[2, 9]
Максимальное значение в списке равно 22 , и мы видим, что оно встречается при значениях индекса 2 и 9 в списке.
Дополнительные ресурсы
Как заархивировать два списка в Python
Как преобразовать список в DataFrame в Python
Как построить гистограмму из списка данных в Python
Improve Article
Save Article
Like Article
Improve Article
Save Article
Like Article
Given an array arr[] consisting of N(> 2) integers, the task is to find the peak index of the array. If the array doesn’t contain any peak index, then print -1.
The peak index, say idx, of the given array arr[] consisting of N integers is defined as:
- 0 < idx < N – 1
- arr[0] < arr[1] < arr[2] < …. < arr[idx] < …. < arr[N – 2] < arr[N – 1]
Examples:
Input: arr[] = {0, 1, 0}
Output: 1
Explanation: In the given array at index 1, arr[0] < arr[1] and arr[1] > arr[2]. Since index 1 satisfies the given condition, therefore 1 is a peak index of the array.Input: arr[] = {3, 5, 5, 4, 3, 2, 1}
Output: -1
Naive Approach: The simplest approach is to traverse the array and check for each index, say idx, over the range [1, N – 2] whether the index idx can be the peak index of the array or not. This can be done by checking if all elements to the left and right of this index idx must be in strictly increasing and strictly decreasing order. After checking for all the indices, if there exists any such index, then print that index. Otherwise, print “-1”.
Time Complexity: O(N2)
Auxiliary Space: O(1)
Efficient Approach: The above approach can also be optimized based on the fact that the peak index will exist only if the array contains a strictly increasing prefix followed by a strictly decreasing suffix.
Follow the steps below to solve the problem:
- Initialize two variables, say ans, to store the index of the peak element of the array.
- Traverse the given array over the range of indices [1, N – 2], using a variable, say i. If the value of arr[i] is greater than or equal to arr[i + 1], then update ans as i and break out of the loop.
- If the value of ans is 0 or (N – 1), then print “-1”, as there exists no such peak index for the given array.
- Now, traverse the given array over the range [ans, N – 2] using the variable i and if the value of arr[i] is less than or equal to arr[i + 1], then break out of the loop.
- After completing the above steps, if the value of i is (N – 1) then print the value of ans as the resultant peak index. Otherwise, print “-1” as there exists no such peak index for the given array.
Below is the implementation of the above approach:
C++
#include <bits/stdc++.h>
using
namespace
std;
int
peakIndex(
int
arr[],
int
N)
{
if
(N < 3)
return
-1;
int
i = 0;
while
(i + 1 < N)
{
if
(arr[i + 1] < arr[i] ||
arr[i] == arr[i + 1])
break
;
i++;
}
if
(i == 0 || i == N - 1)
return
-1;
int
ans = i;
while
(i < N - 1)
{
if
(arr[i] < arr[i + 1] ||
arr[i] == arr[i + 1])
break
;
i++;
}
if
(i == N - 1)
return
ans;
return
-1;
}
int
main()
{
int
arr[] = { 0, 1, 0 };
int
N =
sizeof
(arr) /
sizeof
(arr[0]);
cout << peakIndex(arr, N) <<
"n"
;
return
0;
}
Java
import
java.io.*;
import
java.util.*;
class
GFG {
public
static
int
peakIndex(
int
[] arr)
{
int
N = arr.length;
if
(arr.length <
3
)
return
-
1
;
int
i =
0
;
while
(i +
1
< N) {
if
(arr[i +
1
] < arr[i]
|| arr[i] == arr[i +
1
])
break
;
i++;
}
if
(i ==
0
|| i == N -
1
)
return
-
1
;
int
ans = i;
while
(i < N -
1
) {
if
(arr[i] < arr[i +
1
]
|| arr[i] == arr[i +
1
])
break
;
i++;
}
if
(i == N -
1
)
return
ans;
return
-
1
;
}
public
static
void
main(String[] args)
{
int
[] arr = {
0
,
1
,
0
};
System.out.println(peakIndex(arr));
}
}
Python3
def
peakIndex(arr):
N
=
len
(arr)
if
(
len
(arr) <
3
):
return
-
1
i
=
0
while
(i
+
1
< N):
if
(arr[i
+
1
] < arr[i]
or
arr[i]
=
=
arr[i
+
1
]):
break
i
+
=
1
if
(i
=
=
0
or
i
=
=
N
-
1
):
return
-
1
ans
=
i
while
(i < N
-
1
):
if
(arr[i] < arr[i
+
1
]
or
arr[i]
=
=
arr[i
+
1
]):
break
i
+
=
1
if
(i
=
=
N
-
1
):
return
ans
return
-
1
if
__name__
=
=
'__main__'
:
arr
=
[
0
,
1
,
0
]
print
(peakIndex(arr))
C#
using
System;
using
System.Collections.Generic;
class
GFG{
public
static
int
peakIndex(
int
[] arr)
{
int
N = arr.Length;
if
(arr.Length < 3)
return
-1;
int
i = 0;
while
(i + 1 < N)
{
if
(arr[i + 1] < arr[i] ||
arr[i] == arr[i + 1])
break
;
i++;
}
if
(i == 0 || i == N - 1)
return
-1;
int
ans = i;
while
(i < N - 1)
{
if
(arr[i] < arr[i + 1] ||
arr[i] == arr[i + 1])
break
;
i++;
}
if
(i == N - 1)
return
ans;
return
-1;
}
static
public
void
Main()
{
int
[] arr = { 0, 1, 0 };
Console.WriteLine(peakIndex(arr));
}
}
Javascript
<script>
function
peakIndex(arr)
{
var
N = arr.length;
if
(arr.length < 3)
return
-1;
var
i = 0;
while
(i + 1 < N) {
if
(arr[i + 1] < arr[i] || arr[i] == arr[i + 1])
break
;
i++;
}
if
(i == 0 || i == N - 1)
return
-1;
var
ans = i;
while
(i < N - 1) {
if
(arr[i] < arr[i + 1] || arr[i] == arr[i + 1])
break
;
i++;
}
if
(i == N - 1)
return
ans;
return
-1;
}
var
arr = [ 0, 1, 0 ];
document.write(peakIndex(arr));
</script>
Time Complexity: O(N)
Auxiliary Space: O(1)
Last Updated :
03 May, 2021
Like Article
Save Article
3 / 2 / 2 Регистрация: 26.10.2015 Сообщений: 265 |
|
1 |
|
Найти индекс наибольшего числа в массиве28.10.2015, 13:20. Показов 9696. Ответов 7
1. Вводим неск чисел.Найти индекс наибольшего числа в массиве. Если таких чисел несколько найти индекс первого из них.
0 |
Programming Эксперт 94731 / 64177 / 26122 Регистрация: 12.04.2006 Сообщений: 116,782 |
28.10.2015, 13:20 |
Ответы с готовыми решениями: Найти индекс наибольшего числа в массиве В одномерном массиве А(10) найти значение и индекс наибольшего из отрицательных элементов Как в массиве найти повторяющиеся числа, взять каждого того повторяющегося числа индекс Найти индекс числа в многомерном массиве 7 |
Shakalaka 653 / 556 / 322 Регистрация: 27.01.2015 Сообщений: 1,374 |
||||
28.10.2015, 14:15 |
2 |
|||
1 |
3 / 2 / 2 Регистрация: 26.10.2015 Сообщений: 265 |
|
28.10.2015, 21:31 [ТС] |
3 |
чет не работает в нотпаде
0 |
Padimanskas Superposition 950 / 615 / 256 Регистрация: 27.10.2013 Сообщений: 2,083 |
||||
29.10.2015, 01:04 |
5 |
|||
Детский сад
0 |
Fedor Vlasenko 934 / 692 / 235 Регистрация: 01.02.2015 Сообщений: 1,848 |
||||
29.10.2015, 01:14 |
6 |
|||
0 |
Superposition 950 / 615 / 256 Регистрация: 27.10.2013 Сообщений: 2,083 |
|
29.10.2015, 01:23 |
7 |
var max = Math.max.apply(null, arr); Вот препод посмотрит в листинг и спросит -“А дзе ты эта узял, Вася? Напересдачу давай пока”
0 |
934 / 692 / 235 Регистрация: 01.02.2015 Сообщений: 1,848 |
|
29.10.2015, 01:28 |
8 |
Вот препод посмотрит в листинг и спросит -“А дзе ты эта узял, Вася? Напересдачу давай пока” А он, вот документация, в примере приведена работа с массивами
0 |
В этой статье хочу показать несколько простых решений, с помощью которых можно найти индекс максимального или минимального элемента массива.
Как найти индекс минимального элемента массива?
Сначала нужно найти минимальный элемент массива, а затем воспользоваться одним из ниже приведенных примеров.
Одномерный массив
Для нахождения индекса минимального элемента в одномерном массиве можно воспользоваться методом IndexOf класса Array, например:
C#:
int [] numbers = {20, 13, 562, 1, 900, 78};
//1. Находим минимальное значение
int minVal = numbers.Min(); //1
//2. Находим индекс
int indexMin = Array.IndexOf(numbers, minVal);
//Результат: 3
Этот же результат можно получить и с помощью метода FindIndex всё того же класса Array, например:
C#:
int indexMin = Array.FindIndex(numbers, x => x == minVal);
Если в массиве будет найдено два или более одинаковых минимальных или максимальных значений, то тогда будет получен индекс самого первого из них. Если нужно получить индекс последнего найденного элемента, то тогда можно воспользоваться методом FindLastIndex, например:
C#:
int [] numbers = { 20, 1, 562, 10, 900, 78, 1 };
int minVal = 1;
int lastIndexMin = Array.FindLastIndex(numbers,x => x == minVal);
//Результат: 6
Многомерный массив
С помощью методов: IndexOf и FindIndex можно найти индекс элемента только в одномерном массиве. В многомерном массиве индекс элемента будет иметь значения вида: array[0, 0] и найти его можно, например, с помощью обычного цикла for.
C#:
int[,] numbers = { { 100,30,6,8,18,17 }, { 2,3,61,69,8,56 } };
//1. Находим минимальный элемент
IEnumerableint> colNumbs = numbers.Castint>();
int minVal = colNumbs.Min(); //2
//2. Находим индекс минимального элемента
for (int i = 0; i < numbers.GetLength(0); i++)
{
for (int j = 0; j < numbers.GetLength(1); j++)
{
if (numbers[i, j].Equals(minVal))
{
Console.Write(i + "-" + j);
//выход из цикла
i = numbers.GetLength(0);
break;
}
}
}
//Результат: 1-0
Если в многомерном массиве будет несколько одинаковых минимальных или максимальных значений, то тогда можно убрать часть, отвечающую за выход из цикла и получить индекс каждого найденного элемента, например:
C#:
int[,] numbers = { { 100,2,6,8,18,17 }, { 2,3,61,69,8,56 } };
int minVal = 2;
if (numbers[i, j].Equals(minVal))
{
Console.WriteLine(i + "-" + j);
}
//Результат: 0-1, 1-0
Jagged массив
В Jagged массиве каждый элемент представляет собой отдельный массив. Чтобы найти индекс самого минимального значения в массиве также воспользуемся циклом for.
C#:
int[][] numbers = { new int [] {12,13,6,7,8},
new int [] {99,4,6,3,90},
new int [] {11,22,77,55}};
//1. Находим минимальный элемент
int minVal = numbers.SelectMany(x => x).Min();
//находим его индекс
for (int i = 0; i < numbers.Length; i++)
{
for (int j = 0; j < numbers.Length; j++)
{
if (numbers[j].Equals(minVal))
{
Console.Write(i + "-" + j);
//выход из цикла
i = numbers.Length;
break;
}
}
}
//Результат: 1-3
Как найти индекс максимального значения?
Всё то же самое, только сначала нужно найти максимальный элемент массива.
Читайте также:
- Включаем нумерацию строк в Visual Studio 2013
- Как подписаться на событие?
- C# Как скопировать файл?