📅  最后修改于: 2023-12-03 14:58:22.438000             🧑  作者: Mango
这是一道 GATE 计算机科学模拟考试的题目,题号为 61 题。本题是在设置2中的一道编程题目,主要涉及算法和数据结构的知识。
给定一个整数数组 arr
,编写一个函数来找到数组中第二小的元素,并将其返回。如果不存在第二小的元素,则返回 -1。
def second_smallest(arr: List[int]) -> int:
pass
arr
:整数数组arr = [5, 2, 3, 6, 4]
2
通常解决此类问题的有效方法是首先对数组进行排序,然后返回排序后的第二个元素。
arr
进行排序,升序排列。arr[1]
。from typing import List
def second_smallest(arr: List[int]) -> int:
arr.sort() # 对数组进行排序
if len(arr) < 2:
return -1
return arr[1]
这是一个简单的实现,只需要对数组进行排序并返回第二个元素。算法的时间复杂度为 O(nlogn),其中 n 是数组的长度。
assert second_smallest([5, 2, 3, 6, 4]) == 2
assert second_smallest([3, 8, 1, 10]) == 3
assert second_smallest([10, 20]) == 20
assert second_smallest([7, 7, 7, 7]) == -1
assert second_smallest([-5, -2, -3]) == -3
这些测试例子覆盖了各种情况,包括正整数、负整数、数组长度为2、数组中有相同元素等情况。
通过这道题目,加深了对排序算法和数组操作的理解。这是一道简单的算法题,但在 GATE 考试中出现频率较高,并且可以帮助提高对基本算法和数据结构的理解。