Основные упражнения по программированию на JavaScript

JavaScriptJavaScriptBeginner
Практиковаться сейчас

This tutorial is from open-source community. Access the source code

💡 Этот учебник переведен с английского с помощью ИИ. Чтобы просмотреть оригинал, вы можете перейти на английский оригинал

Введение

В этом практическом занятии мы будем изучать программирование на JavaScript, выполняя серию упражнений, направленных на формирование фундаментальных навыков. От базового синтаксиса и типов данных до более сложных концепций, таких как асинхронное программирование и функциональное программирование, это практическое занятие даст вам hands-on-опыт, который поможет вам стать опытным разработчиком на JavaScript. Независимо от того, новая вы в программировании или ищите расширение своих навыков, это практическое занятие предоставит вам инструменты, необходимые для успеха.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL javascript(("JavaScript")) -.-> javascript/BasicConceptsGroup(["Basic Concepts"]) javascript(("JavaScript")) -.-> javascript/AdvancedConceptsGroup(["Advanced Concepts"]) javascript/BasicConceptsGroup -.-> javascript/variables("Variables") javascript/BasicConceptsGroup -.-> javascript/data_types("Data Types") javascript/BasicConceptsGroup -.-> javascript/arith_ops("Arithmetic Operators") javascript/BasicConceptsGroup -.-> javascript/comp_ops("Comparison Operators") javascript/BasicConceptsGroup -.-> javascript/cond_stmts("Conditional Statements") javascript/AdvancedConceptsGroup -.-> javascript/spread_rest("Spread and Rest Operators") subgraph Lab Skills javascript/variables -.-> lab-28492{{"Основные упражнения по программированию на JavaScript"}} javascript/data_types -.-> lab-28492{{"Основные упражнения по программированию на JavaScript"}} javascript/arith_ops -.-> lab-28492{{"Основные упражнения по программированию на JavaScript"}} javascript/comp_ops -.-> lab-28492{{"Основные упражнения по программированию на JavaScript"}} javascript/cond_stmts -.-> lab-28492{{"Основные упражнения по программированию на JavaScript"}} javascript/spread_rest -.-> lab-28492{{"Основные упражнения по программированию на JavaScript"}} end

Алгоритм нахождения максимального подмассива

Для практики программирования откройте Терминал/SSH и введите node. Этот алгоритм находит непрерывный подмассив с наибольшей суммой в массиве чисел. Чтобы реализовать этот алгоритм, следуйте шагам:

  • Используйте жадный подход для отслеживания текущей суммы и текущего максимума, maxSum. Установите maxSum в -Infinity, чтобы гарантировать возврат наибольшего отрицательного значения, если все значения отрицательные.
  • Определите переменные для отслеживания максимального индекса начала, sMax, максимального индекса конца, eMax и текущего индекса начала, s.
  • Используйте Array.prototype.forEach(), чтобы перебрать значения и добавить текущее значение к сумме.
  • Если текущая сумма больше maxSum, обновите значения индексов и maxSum.
  • Если сумма меньше 0, сбросьте ее до 0 и обновите значение s до следующего индекса.
  • Используйте Array.prototype.slice(), чтобы вернуть подмассив, указанный переменными индексов.

Вот JavaScript-код для алгоритма:

const maxSubarray = (...arr) => {
  let maxSum = -Infinity,
    sum = 0;
  let sMax = 0,
    eMax = arr.length - 1,
    s = 0;

  arr.forEach((n, i) => {
    sum += n;
    if (maxSum < sum) {
      maxSum = sum;
      sMax = s;
      eMax = i;
    }

    if (sum < 0) {
      sum = 0;
      s = i + 1;
    }
  });

  return arr.slice(sMax, eMax + 1);
};

Вот пример использования этой функции:

maxSubarray(-2, 1, -3, 4, -1, 2, 1, -5, 4); // [4, -1, 2, 1]

Резюме

Поздравляем! Вы завершили практическое занятие по нахождению максимального подмассива. Вы можете выполнить больше практических занятий в LabEx, чтобы улучшить свои навыки.