Подготовка к собеседованию по программированию: найдите второе по величине число

Вам дан массив или список целых чисел Python: 1,3,4,5,0,2

Ожидается, что мы напишем функцию second_largest(sample_list), которая принимает список в качестве входных данных и возвращает второе по величине число.

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

Нам нужно задать интервьюеру несколько вопросов, а не предполагать, что мы полностью понимаем проблему.

Помните, что вы оцениваетесь по 4 баллам :

1) Структуры данных и алгоритмы 2) Навыки кодирования

3) Коммуникативные навыки

4) Навыки решения проблем

· Наш первый вопрос должен заключаться в том, может ли массив или список Python быть пустым?

· Если интервьюер отвечает утвердительно, второй по величине(а) должен вернуть None в этом вопросе, мы уже знаем, что от нас ожидается.

· Обратите внимание, что None используется для определения отсутствия значения вообще, многие ошибочно принимают его за 0, false или пустую строку.

· Второй вопрос: может ли массив/список иметь внутри только один элемент?

· Интервьюер отвечает да, second_largest (a) также должен возвращать None, мы с интервьюером на одной волне.

Итак, мы в ясности, и пришло время решить проблему, поговорив и показав интервьюеру, что мы делаем.

Вы говорите интервьюеру, что собираетесь просмотреть каждый элемент в списке.

Когда вы перебираете список, вы отслеживаете наибольшее число, с которым вы сталкиваетесь.

Шаг 1: Объявите наши переменные «Самый большой» и «Второй по величине».

Мы инициализируем их значением None в начале.

Шаг 2: Мы повторяем цикл, все еще объясняя нашему интервьюеру, что мы делаем.

· Смотрим на первый элемент, самый большой становится 1, а второй по величине по-прежнему остается None

· Самый большой = 1

· Второй_крупнейший = Нет

· Затем мы переходим к нашему второму элементу, наибольшее число которого равно 2, а вторым по величине становится 1.

· Самый большой = 2

· Второй_самый большой = 1

· Мы повторяем до последнего элемента, и наш самый большой элемент равен 5, а второй по величине равен 4

· Самый большой = 5

· Второй_самый большой = 4

После повторения цикла мы должны вернуть из функции второе по величине значение.

Только после поиска ясности и разбивки проблемы на более простые части мы можем кодировать.

Итак, мы собираемся написать функцию с именем second_largest, которая найдет и вернет второе наибольшее_число в нашем заданном массиве.

Таким образом, мы инициализировали две наши переменные, самую большую и вторую по величине, чтобы отслеживать наибольшее число, пока мы повторяем цикл.

Шаг 2: Мы собираемся пройтись по списку, используя цикл For внутри нашей функции.

2.1)

Мы проверяем, равно ли самое большое число None, это означает, что текущее число, которое мы смотрим, является первым числом в списке.

Таким образом, мы устанавливаем наибольшее значение на текущее число, если наибольшее значение не равно Nome, мы переходим к следующему оператору.

2.2)

Мы проверяем, является ли наибольшее значение по-прежнему равным None, что означает, что текущее число является первым числом в списке.

Мы устанавливаем наибольшее текущее число (помните, что мы отслеживаем).

Теперь, если самый большой не равен None, мы переходим к следующему элементу.

2.3)

Мы проверяем, больше ли текущее число, чем самое большое, тогда мы знаем, что текущее число будет новым наибольшим числом, мы также установили второе по величине значение наибольшего, так как мы не хотим потерять значение наибольшего.

Если наше условие неверно, мы переходим ко второму по величине числу.

Мы можем проверить, является ли второе по величине число None, тогда мы теперь сместили наше внимание на второе по величине число в списке, и мы можем назначить второе по величине текущее число.

2.4)

Мы уже можем видеть, что текущее число не является самым большим числом, которое мы видели до сих пор.

Если второе по величине число не равно None и если текущее число больше второго по величине, мы можем установить второе по величине текущее число.

2.5)

Затем мы проверяем, больше ли текущее число второго по величине, и присваиваем второму по величине текущему числу.

Если это утверждение также неверно вместе с другими утверждениями, мы переходим к утверждению else.

2.6)

Если ни одно из условий не выполняется, цикл остановится на этом и вернет нам второе по величине число в указанном цикле.