Проблема с Leetcode 176. Вторая по величине зарплата ⇐ Python

Программы на Python
Anonymous
Проблема с Leetcode 176. Вторая по величине зарплата

Сообщение Anonymous »

Таблица: Сотрудник

Код: Выделить всё

+-------------+------+
| Column Name | Type |
+-------------+------+
| id          | int  |
| salary      | int  |
+-------------+------+
id — это первичный ключ (столбец с уникальными значениями) для этой таблицы.
Каждая строка этой таблицы содержит информацию о зарплате сотрудника.
Напишите решение, позволяющее найти вторую по величине зарплату из таблицы «Сотрудники». Если второй по величине зарплаты нет, верните ноль (в Pandas верните None).
Формат результата показан в следующем примере.
Пример 1:
Ввод:
Таблица сотрудников:

Код: Выделить всё

+----+--------+
| id | salary |
+----+--------+
| 1  | 100    |
| 2  | 200    |
| 3  | 300    |
+----+--------+
Выход:

Код: Выделить всё

+---------------------+
| SecondHighestSalary |
+---------------------+
| 200                 |
+---------------------+
Пример 2:
Ввод:
Таблица сотрудников:

Код: Выделить всё

+----+--------+
| id | salary |
+----+--------+
| 1  | 100    |
+----+--------+
Выход:

Код: Выделить всё

+---------------------+
| SecondHighestSalary |
+---------------------+
| null                |
+---------------------+
В этой задаче я попытался использовать панды, мой код выглядит следующим образом:

Код: Выделить всё

import pandas as pd

def second_highest_salary(employee: pd.DataFrame) -> pd.DataFrame:
employee.salary = employee.salary.drop_duplicates().reset_index(drop = True)
employee = employee.sort_values(by = 'salary',ascending = False)
if employee.shape[0] < 2:
return pd.DataFrame(data = {'SecondHighestSalary':[None]})
else:
return pd.DataFrame(data = {'SecondHighestSalary':[employee.salary.iloc[[1]]]})
и для тестового примера

Код: Выделить всё

| id | salary |
| -- | ------ |
| 1  | 100    |
| 2  | 200    |
| 3  | 300    |
ожидаемый результат:

Код: Выделить всё

| SecondHighestSalary |
| ------------------- |
| 200                 |
и мой вывод такой же:

Код: Выделить всё

| SecondHighestSalary |
| ------------------- |
| 200                 |
Я не понимаю, почему отображается неправильный ответ, но мой результат и ожидаемый результат аналогичны.
Пожалуйста, помогите мне понять ошибку.

Подробнее здесь: https://stackoverflow.com/questions/790 ... est-salary

Вернуться в «Python»