配列要素を探します

タイトル

おそらく重複要素を有するソートされた配列、Aが、所与、ターゲット要素、xの最初と最後の出現の指標を見つけます。-1を返しますターゲットが見つからない場合。

例:
入力:A = [1,3,3,5,7,8,9,9,9,15]、目標= 9
出力:[6,8]

入力:A = [100、150、150、153]、目標= 150
出力:[1,2]

入力:A = [1,2,3,4,5,6,10]、目標= 9
出力:[-1、-1]

分析

配列がソートされているので、それは比較的簡単です。左から右に一回通過します。2Lでカーソル変数を、rは最初に記録し、最後の要素の目標位置が発生します。現在の要素が検索数を減らし、早期のリターンにターゲットより大きければ、同時に決定。

O(N)の時間複雑。

コード

class Solution: 
    def getRange(self, arr, target):
        l, r = -1, -1
        for i in range(len(arr)):
            if arr[i] > target:
                break
            elif arr[i] == target:
                if l == -1:
                    l = i
                r = i
        return [l, r]
  
# Test program 
arr = [1, 2, 2, 2, 2, 3, 4, 7, 8, 8] 
x = 2
print(Solution().getRange(arr, x))
# [1, 4]

おすすめ

転載: www.cnblogs.com/new-start/p/11639162.html
おすすめ