Python、C++、JavaScript、SQL、TypeScript の多様な LeetCode ソリューションを探索してください。面接の準備、学習、複数のプログラミング言語でのコードの練習に最適です。 Github リポジトリ リンク
整数配列があります 数字 昇順でソート( 明確な 値)。
関数に渡される前に、 数字 は おそらく回転している 不明なピボットインデックスで k (1 <= k < nums.length) 結果の配列は次のようになります [nums[k], nums[k+1], ..., nums[n-1], nums[0], nums[1], ..., nums[k-1]] (0 から始まるインデックス)。 例えば、 [0,1,2,4,5,6,7] ピボットインデックスで回転される可能性があります 3 そしてなる [4,5,6,7,0,1,2].
配列を考えると 数字 後 可能な回転と整数 ターゲット、 戻る のインデックス ターゲット それが入っている場合 数字、 または -1 入っていない場合 数字.
アルゴリズムを記述する必要があります O(log n) 実行時の複雑さ。
例 1:
入力: 数値 = [4,5,6,7,0,1,2]、ターゲット = 0 出力: 4
例 2:
入力: 数値 = [4,5,6,7,0,1,2]、ターゲット = 3 出力: -1
例 3:
入力: 数値 = [1]、ターゲット = 0 出力: -1
制約:
1 <= nums.length <= 5000-10 4 <= nums[i] <= 10 4- のすべての値
数字は 個性的. 数字回転される可能性がある昇順の配列です。-10 4 <= ターゲット <= 10 4
パイソン
import List class の入力から 解決策: def search(self, nums: List[int], target: int) -> int: # return nums.index(target) if target in nums else -1 n = len(nums) left, right = 0, n-1 while left <= right:mid = left + (right - left) // 2 if nums[mid] > nums[-1]: left = mid + 1 else: right = mid - 1 def binarySearch(left_boundary: int, right_boundary: int, target: int): left, right = left_boundary, right_boundary while left <= right: mid = left + (right - left) // 2 if nums[mid] == target: return Mid elif nums[mid] > target: right = mid - 1 else: left = middle + 1 return -1 if (answer := binarySearch(0, left-1, target)) != -1: return Answer return binarySearch(左、n-1、ターゲット)

![[リートコード] 0124. 二分木の最大パス和](https://hogantechs.com/wp-content/uploads/2025/03/13-1024x577.jpg)