C++のローテーションリストで最大数を見つけるプログラム
配列があり、それがソートされていると仮定します。配列がピボットで回転していると考えてください。これは私たちにはわかりません。したがって、その回転した配列から最大値を見つける必要があります。したがって、配列が[3,4,5,1,2]のような場合、出力は5になります。
これを解決するには、次の手順に従います-
-
low:=0およびhigh:=配列の最後のインデックス、n:=配列のサイズ、ans:=0
-
低<=高
-
中:=低+(高-低)/ 2
-
arr [low]
-
それ以外の場合、arr [high]> arr [mid]の場合、ans:=ansの最大値とarr[mid]、high:=mid – 1
-
それ以外の場合、low =midの場合、ans:=ansとarr[low]の最大値、low:=mid + 1
-
それ以外の場合、high =midの場合、ans:=ansとarr[high]の最大値、high:=mid-1
-
-
ansを返す
理解を深めるために、次の実装を見てみましょう-
例
#include <bits/stdc++.h> using namespace std; class Solution { public: int search(vector <int>& arr, int low, int high){ if(low == high){ return arr[low]; } int mid = low + (high - low) / 2; int ans = 0; if(arr[low] < arr[mid]){ ans = max(arr[low], search(arr, mid, high)); } else if (arr[high] > arr[mid]){ ans = max(arr[mid], search(arr, low, mid)); } else if(arr[low] == arr[mid]){ ans = max(arr[low], search(arr, low + 1, high)); } else if(arr[high] == arr[mid]){ ans = max(arr[high], search(arr, low, high - 1)); } return ans; } int findMax(vector<int>& nums) { return search(nums, 0, nums.size() - 1); } }; main(){ Solution ob; vector<int> v = {4,5,5,5,6,8,2,3,4}; cout <<(ob.findMax(v)); }
入力
[4,5,5,5,6,8,2,3,4]
出力
8
-
C++でツリーの最大の深さまたは高さを見つけるプログラムを作成する
この問題では、二分木が与えられます。私たちの仕事は、与えられた木の最大の深さまたは高さを見つけるプログラムを書くことです。 問題を理解するために例を見てみましょう 木の高さは3です。 ツリーの最大の高さを見つけるために、その左右のサブツリーの高さを確認し、両方の最大値に1を追加します。これは再帰的なプロセスであり、ツリーの最後のノードが検出され、サブツリーの高さを検出するために1つが段階的に追加されます。 上記の例は、この方法を使用して解決されました。 木の高さを見つける、つまり、height(3)=max(height(5)、height(7))+1。 このために、値5
-
リスト内の最小数を見つけるPythonプログラム
この記事では、以下に示す問題ステートメントの解決策について学習します。 問題の説明 −リストが表示されます。リストで利用可能な最小の番号を表示する必要があります ここでは、リストを並べ替えて最小の要素を取得するか、組み込みのmin()関数を使用して最小の要素を取得できます。 次に、以下の実装の概念を観察しましょう- 例 list1 = [101, 120, 104, 145, 99] # sorting using built-in function list1.sort() print("Smallest element is:", list1[0]) 出力 Smal