Python、C++、JavaScript、SQL、TypeScript の多様な LeetCode ソリューションを探索してください。面接の準備、学習、複数のプログラミング言語でのコードの練習に最適です。 Github リポジトリ リンク
長さの配列を想定します n 昇順に並べ替えると、 回転した 間 1 そして n たとえば、配列です。 数値 = [0,1,2,4,5,6,7] 次のようになる可能性があります:
[4,5,6,7,0,1,2]回転していたら4回。[0,1,2,4,5,6,7]回転していたら7回。
注目してください 回転する 配列 [a[0]、a[1]、a[2]、...、a[n-1]] 配列内の 1 回の結果 [a[n-1]、a[0]、a[1]、a[2]、...、a[n-2]].
ソートされた回転配列を考えると 数字 の 個性的 要素、戻り値 この配列の最小要素.
で実行されるアルゴリズムを作成する必要があります。 O(log n) 時間。
例 1:
入力: 数値 = [3,4,5,1,2] 出力: 1 説明: 元の配列は [1,2,3,4,5] で 3 回回転されました。
例 2:
入力: 数値 = [4,5,6,7,0,1,2] 出力: 0 説明: 元の配列は [0,1,2,4,5,6,7] で、4 回回転されました。
例 3:
入力: 数値 = [11,13,15,17] 出力: 11 説明: 元の配列は [11,13,15,17] で、4 回回転されました。
制約:
n == nums.length1 <= n <= 5000-5000 <= nums[i] <= 5000- のすべての整数
数字は 個性的. 数字の間でソートおよびローテーションされます1そしてn回。
パイソン
# 時間計算量: O(logn) # 空間計算量: インポート リスト クラスの入力による O(1) 解決策: def findMin(self, nums: List[int]) -> int: if len(nums) == 1: return nums [0] left, right = 0, len(nums) - 1 if nums[right] > nums[0]: nums[0] を返します while left <= right: middle = left + (right - left) // 2 if nums[mid] > nums[mid + 1]: nums[mid] < nums[mid - 1]の場合、nums[mid+1]を返します。 nums[mid] > nums[-1]の場合、nums[mid]を返します: left = Mid + 1 それ以外の場合: right = Mid - 1 return nums[mid] nums = [11, 13, 15, 17] print(Solution().findMin(nums))

![[リートコード] 0242. 有効なアナグラム](https://hogantechs.com/wp-content/uploads/2025/02/3-1024x577.jpg)