-
シンプルな方法:
- 配列をソートします。ソート方法には、昇順または降順のいずれかを使用できます。
- ソートされた配列の2番目の要素を返します。
例:
def find_second_largest(arr): arr.sort() return arr[-2] array = [5, 2, 9, 1, 7] second_largest = find_second_largest(array) print(second_largest) # Output: 7
-
最適化された方法:
- 配列を1つずつ走査し、最大値と2番目に大きい値をトラッキングします。
- 最大値よりも大きい要素が見つかった場合、現在の最大値を2番目に大きい値として更新します。
- 最終的に2番目に大きい値を返します。
例:
def find_second_largest(arr): max_value = arr[0] second_largest = float('-inf') for num in arr: if num > max_value: second_largest = max_value max_value = num elif num > second_largest and num != max_value: second_largest = num return second_largest array = [5, 2, 9, 1, 7] second_largest = find_second_largest(array) print(second_largest) # Output: 7
このように、配列内の2番目に大きい要素を見つけるためには、ソートや走査を行うことができます。最適化された方法では、配列を1回だけ走査するため、効率的な解決策となります。