edit
This commit is contained in:
parent
e78e527866
commit
05a93ced80
212 changed files with 3213 additions and 3968 deletions
|
@ -3,8 +3,7 @@
|
|||
|
||||
Например, для `[-1, 2, 3, -9, 11]`:
|
||||
|
||||
```js
|
||||
//+ no-beautify
|
||||
```js no-beautify
|
||||
// Начиная с -1:
|
||||
-1
|
||||
-1 + 2
|
||||
|
@ -37,8 +36,7 @@
|
|||
|
||||
Решение через вложенный цикл:
|
||||
|
||||
```js
|
||||
//+ run
|
||||
```js run
|
||||
function getMaxSubSum(arr) {
|
||||
var maxSum = 0; // если совсем не брать элементов, то сумма 0
|
||||
|
||||
|
@ -74,8 +72,7 @@ alert( getMaxSubSum([100, -9, 2, -3, 5]) ); // 100
|
|||
|
||||
# Быстрое решение
|
||||
|
||||
```js
|
||||
//+ run
|
||||
```js run
|
||||
function getMaxSubSum(arr) {
|
||||
var maxSum = 0,
|
||||
partialSum = 0;
|
||||
|
@ -87,7 +84,6 @@ function getMaxSubSum(arr) {
|
|||
return maxSum;
|
||||
}
|
||||
|
||||
|
||||
alert( getMaxSubSum([-1, 2, 3, -9]) ); // 5
|
||||
alert( getMaxSubSum([-1, 2, 3, -9, 11]) ); // 11
|
||||
alert( getMaxSubSum([-2, -1, 1, 2]) ); // 3
|
||||
|
@ -96,6 +92,6 @@ alert( getMaxSubSum([1, 2, 3]) ); // 6
|
|||
alert( getMaxSubSum([-1, -2, -3]) ); // 0
|
||||
```
|
||||
|
||||
Информацию об алгоритме вы также можете прочитать здесь: [](http://e-maxx.ru/algo/maximum_average_segment) и здесь: [Maximum subarray problem](http://en.wikipedia.org/wiki/Maximum_subarray_problem).
|
||||
Информацию об алгоритме вы также можете прочитать здесь: <http://e-maxx.ru/algo/maximum_average_segment> и здесь: [Maximum subarray problem](http://en.wikipedia.org/wiki/Maximum_subarray_problem).
|
||||
|
||||
Этот алгоритм требует ровно одного прохода по массиву, его сложность имеет оценку `O(n)`.
|
|
@ -1,10 +1,12 @@
|
|||
# Подмассив наибольшей суммы
|
||||
importance: 2
|
||||
|
||||
[importance 2]
|
||||
---
|
||||
|
||||
# Подмассив наибольшей суммы
|
||||
|
||||
На входе массив чисел, например: `arr = [1, -2, 3, 4, -9, 6]`.
|
||||
|
||||
Задача -- найти непрерывный подмассив `arr`, сумма элементов которого максимальна.
|
||||
Задача -- найти непрерывный подмассив `arr`, сумма элементов которого максимальна.
|
||||
|
||||
Ваша функция должна возвращать только эту сумму.
|
||||
|
||||
|
@ -13,7 +15,7 @@
|
|||
```js
|
||||
getMaxSubSum([-1, *!*2, 3*/!*, -9]) = 5 (сумма выделенных)
|
||||
getMaxSubSum([*!*2, -1, 2, 3*/!*, -9]) = 6
|
||||
getMaxSubSum([-1, 2, 3, -9, *!*11*/!*]) = 11
|
||||
getMaxSubSum([-1, 2, 3, -9, *!*11*/!*]) = 11
|
||||
getMaxSubSum([-2, -1, *!*1, 2*/!*]) = 3
|
||||
getMaxSubSum([*!*100*/!*, -9, 2, -3, 5]) = 100
|
||||
getMaxSubSum([*!*1, 2, 3*/!*]) = 6 (неотрицательные - берем всех)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue