<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??碼云GVP開源項目 12k star Uniapp+ElementUI 功能強大 支持多語言、二開方便! 廣告
                # 最大數目等于 0 和 1 的子數組 > 原文: [https://www.geeksforgeeks.org/largest-subarray-with-equal-number-of-0s-and-1s/](https://www.geeksforgeeks.org/largest-subarray-with-equal-number-of-0s-and-1s/) 給定一個僅包含 0 和 1 的數組,找到包含相等的 0 和 1 的最大子數組。 預期時間復雜度為`O(n)`。 **示例**: ``` Input: arr[] = {1, 0, 1, 1, 1, 0, 0} Output: 1 to 6 (Starting and Ending indexes of output subarray) Input: arr[] = {1, 1, 1, 1} Output: No such subarray Input: arr[] = {0, 0, 1, 1, 0} Output: 0 to 3 Or 1 to 4 ``` **方法 1**:暴力。 **方法**:這些類型問題中的暴力方法是生成所有可能的子數組。 然后,首先檢查子數組的 **0** 和 **1** 的數目是否相等。 為了簡化此過程,將 **0 作為 -1**, **1** 保持原樣,對子數組分別**累積總和**。 **累積總和等于 0** 的點表示從開始到該點的子數組具有相等數量的 **0** 和 **1**。 現在,由于這是一個有效的子數組,請將其大小與迄今為止找到的此類子數組的最大大小進行比較。 **算法**: 1. 使用起始指針表示子數組的起始點。 2. 取一個變量`sum = 0`,它將取所有子數組元素的累加和。 3. 如果起始點的值`= 1`則用 **1** 初始化,否則用 **-1** 初始化。 4. 現在開始一個內部循環,并按照相同的邏輯開始累積元素的總和。 5. 如果累積總和`= 0`,則表示子數組的 **0 的數量等于 1**。 6. 現在,將其大小與最大子數組的大小進行比較,如果更大,則將此類子數組的第一個索引存儲在變量中并更新大小的值。 7. 打印具有上述算法返回的**起始索引和大小**的子數組。 **偽代碼**: ``` Run a loop from i=0 to n-1 if(arr[i]==1) sum=1 else sum=-1 Run inner loop from j=i+1 to n-1 sum+=arr[j] if(sum==0) if(j-i+1>max_size) start_index=i max_size=j-i+1 Run a loop from i=start_index till max_size-1 print(arr[i]) ``` ## C++ ```cpp // A simple C++ program to find the largest // subarray with equal number of 0s and 1s #include <bits/stdc++.h> using namespace std; // This function Prints the starting and ending // indexes of the largest subarray with equal // number of 0s and 1s. Also returns the size // of such subarray. int findSubArray(int arr[], int n) { ????int sum = 0; ????int maxsize = -1, startindex; ????// Pick a starting point as i ????for (int i = 0; i < n - 1; i++) { ????????sum = (arr[i] == 0) ? -1 : 1; ????????// Consider all subarrays starting from i ????????for (int j = i + 1; j < n; j++) { ????????????(arr[j] == 0) ? (sum += -1) : (sum += 1); ????????????// If this is a 0 sum subarray, then ????????????// compare it with maximum size subarray ????????????// calculated so far ????????????if (sum == 0 && maxsize < j - i + 1) { ????????????????maxsize = j - i + 1; ????????????????startindex = i; ????????????} ????????} ????} ????if (maxsize == -1) ????????cout << "No such subarray"; ????else ????????cout << startindex << " to " ?????????????<< startindex + maxsize - 1; ????return maxsize; } /* Driver code*/ int main() { ????int arr[] = { 1, 0, 0, 1, 0, 1, 1 }; ????int size = sizeof(arr) / sizeof(arr[0]); ????findSubArray(arr, size); ????return 0; } // This code is contributed by rathbhupendra ``` ## C ``` // A simple program to find the largest subarray // with equal number of 0s and 1s #include <stdio.h> // This function Prints the starting and ending // indexes of the largest subarray with equal // number of 0s and 1s. Also returns the size // of such subarray. int findSubArray(int arr[], int n) { ????int sum = 0; ????int maxsize = -1, startindex; ????// Pick a starting point as i ????for (int i = 0; i < n - 1; i++) { ????????sum = (arr[i] == 0) ? -1 : 1; ????????// Consider all subarrays starting from i ????????for (int j = i + 1; j < n; j++) { ????????????(arr[j] == 0) ? (sum += -1) : (sum += 1); ????????????// If this is a 0 sum subarray, then ????????????// compare it with maximum size subarray ????????????// calculated so far ????????????if (sum == 0 && maxsize < j - i + 1) { ????????????????maxsize = j - i + 1; ????????????????startindex = i; ????????????} ????????} ????} ????if (maxsize == -1) ????????printf("No such subarray"); ????else ????????printf("%d to %d", startindex, startindex + maxsize - 1); ????return maxsize; } /* Driver program to test above functions*/ int main() { ????int arr[] = { 1, 0, 0, 1, 0, 1, 1 }; ????int size = sizeof(arr) / sizeof(arr[0]); ????findSubArray(arr, size); ????return 0; } ``` ## Java ```java class LargestSubArray { ????// This function Prints the starting and ending ????// indexes of the largest subarray with equal ????// number of 0s and 1s. Also returns the size ????// of such subarray. ????int findSubArray(int arr[], int n) ????{ ????????int sum = 0; ????????int maxsize = -1, startindex = 0; ????????int endindex = 0; ????????// Pick a starting point as i ????????for (int i = 0; i < n - 1; i++) { ????????????sum = (arr[i] == 0) ? -1 : 1; ????????????// Consider all subarrays starting from i ????????????for (int j = i + 1; j < n; j++) { ????????????????if (arr[j] == 0) ????????????????????sum += -1; ????????????????else ????????????????????sum += 1; ????????????????// If this is a 0 sum subarray, then ????????????????// compare it with maximum size subarray ????????????????// calculated so far ????????????????if (sum == 0 && maxsize < j - i + 1) { ????????????????????maxsize = j - i + 1; ????????????????????startindex = i; ????????????????} ????????????} ????????} ????????endindex = startindex + maxsize - 1; ????????if (maxsize == -1) ????????????System.out.println("No such subarray"); ????????else ????????????System.out.println(startindex + " to " + endindex); ????????return maxsize; ????} ????/* Driver program to test the above functions */ ????public static void main(String[] args) ????{ ????????LargestSubArray sub; ????????sub = new LargestSubArray(); ????????int arr[] = { 1, 0, 0, 1, 0, 1, 1 }; ????????int size = arr.length; ????????sub.findSubArray(arr, size); ????} } ``` ## Python3 ```py # A simple program to find the largest subarray # with equal number of 0s and 1s # This function Prints the starting and ending # indexes of the largest subarray with equal? # number of 0s and 1s. Also returns the size? # of such subarray. def findSubArray(arr, n): ????sum = 0 ????maxsize = -1 ????# Pick a starting point as i ????for i in range(0, n-1): ????????sum = -1 if(arr[i] == 0) else 1 ????????# Consider all subarrays starting from i ????????for j in range(i + 1, n): ????????????sum = sum + (-1) if (arr[j] == 0) else sum + 1 ????????????# If this is a 0 sum subarray, then? ????????????# compare it with maximum size subarray ????????????# calculated so far ????????????if (sum == 0 and maxsize < j-i + 1): ????????????????maxsize = j - i + 1 ????????????????startindex = i ????if (maxsize == -1): ????????print("No such subarray"); ????else: ????????print(startindex, "to", startindex + maxsize-1); ????return maxsize # Driver program to test above functions arr = [1, 0, 0, 1, 0, 1, 1] size = len(arr) findSubArray(arr, size) # This code is contributed by Smitha Dinesh Semwal ``` ## C# ```cs // A simple program to find the largest subarray // with equal number of 0s and 1s using System; class GFG { ????// This function Prints the starting and ending ????// indexes of the largest subarray with equal ????// number of 0s and 1s. Also returns the size ????// of such subarray. ????static int findSubArray(int[] arr, int n) ????{ ????????int sum = 0; ????????int maxsize = -1, startindex = 0; ????????int endindex = 0; ????????// Pick a starting point as i ????????for (int i = 0; i < n - 1; i++) { ????????????sum = (arr[i] == 0) ? -1 : 1; ????????????// Consider all subarrays starting from i ????????????for (int j = i + 1; j < n; j++) { ????????????????if (arr[j] == 0) ????????????????????sum += -1; ????????????????else ????????????????????sum += 1; ????????????????// If this is a 0 sum subarray, then ????????????????// compare it with maximum size subarray ????????????????// calculated so far ????????????????if (sum == 0 && maxsize < j - i + 1) { ????????????????????maxsize = j - i + 1; ????????????????????startindex = i; ????????????????} ????????????} ????????} ????????endindex = startindex + maxsize - 1; ????????if (maxsize == -1) ????????????Console.WriteLine("No such subarray"); ????????else ????????????Console.WriteLine(startindex + " to " + endindex); ????????return maxsize; ????} ????// Driver program ????public static void Main() ????{ ????????int[] arr = { 1, 0, 0, 1, 0, 1, 1 }; ????????int size = arr.Length; ????????findSubArray(arr, size); ????} } // This code is contributed by Sam007 ``` ## PHP ```php <?php? // A simple program to find the? // largest subarray with equal? // number of 0s and 1s // This function Prints the starting? // and ending indexes of the largest? // subarray with equal number of 0s? // and 1s. Also returns the size of? // such subarray. function findSubArray(&$arr, $n) { ????$sum = 0; ????$maxsize = -1; ????// Pick a starting point as i ????for ($i = 0; $i < $n - 1; $i++) ????{ ????????$sum = ($arr[$i] == 0) ? -1 : 1; ????????// Consider all subarrays ????????// starting from i ????????for ($j = $i + 1; $j < $n; $j++) ????????{ ????????????($arr[$j] == 0) ?? ???????????????($sum += -1) : ($sum += 1); ????????????// If this is a 0 sum subarray,? ????????????// then compare it with maximum? ????????????// size subarray calculated so far ????????????if ($sum == 0 && $maxsize < $j - $i + 1) ????????????{ ????????????????$maxsize = $j - $i + 1; ????????????????$startindex = $i; ????????????} ????????} ????} ????if ($maxsize == -1) ????????echo "No such subarray"; ????else ????????echo $startindex. " to " . ????????????($startindex + $maxsize - 1); ????return $maxsize; } // Driver Code $arr = array(1, 0, 0, 1, 0, 1, 1); $size = sizeof($arr); findSubArray($arr, $size); // This coed is contributed? // by ChitraNayal ?> ``` **輸出**: ``` 0 to 5 ``` **復雜度分析**: * **時間復雜度**:`O(n ^ 2)`。 由于所有可能的子數組都是使用一對嵌套循環生成的。 * **輔助空間**:`O(1)`。 因為沒有使用占用輔助空間的額外數據結構。 **方法 2:** [Hashmap](http://www.geeksforgeeks.org/java-util-hashmap-in-java/) 。 **方法**:以**以 0 為 -1 的累積和概念**將有助于我們優化該方法。 在求和時,有兩種情況可以有一個子數組,其子數組的個數分別為 0 和 1。 1. 當累積總和`= 0`時,表示從索引(**0**)到當前索引的子數組具有相等數量的 **0 和 1**。 2. 當我們遇到之前已經遇到的累加總和值時,這意味著從**先前索引 +1** 到**當前索引**的子數組具有等于 0 和 1 的數量,他們給出的**總和為 0**。 簡而言之,此問題等效于在`array[]`中找到兩個索引`i & j`,使得`array[i] = array[j]`和(`j-i`)最大。 為了存儲每個唯一累積總和值的第一次出現,我們使用 **hash_map**,如果再次獲得該值,我們可以找到子數組的大小,并將其與迄今為止找到的最大大小進行比較。 **算法**: 1. 令輸入數組為大小為`n`的`arr[]`,`max_size`為輸出子數組的大小。 2. 創建大小為`n`的臨時數組`sumleft[]`。 將所有從`arr[0]`到`arr[i]`的元素的和存儲在`sumleft[i]`中。 3. 有兩種情況,輸出子數組可能從第 0 個索引開始,也可能從其他索引開始。 我們將返回通過兩種情況獲得的最大值。 4. 要找到從第 0 個索引開始的最大長度子數組,請掃描`sumleft[]`并在`sumleft[i] = 0`的情況下找到最大`i`。 5. 現在,我們需要找到子數組`sum`等于 0 且起始索引不為 0 的子數組。此問題等效于在`sumleft[]`中找到兩個索引`i & j`,使得`sumleft[i] = sumleft[j]`和`ji`最大。 為了解決這個問題,我們創建了一個大小為`max-min + 1`的哈希表,其中`min`是`sumleft[]`中的最小值,而`max`是`sumleft[]`中的最大值。 將`sumleft[]`中所有不同值的最左邊出現的值散列。 哈希的大小選擇為`max-min + 1`,因為`sumleft[]`中可能存在許多不同的可能值。 將哈希中的所有值初始化為 -1。 6. 要填充并使用`hash[]`,請將`sumleft[]`從 0 遍歷到`n-1`。 如果`hash[]`中不存在值,則將其索引存儲在`hash`中。 如果存在該值,則計算`sumleft[]`的當前索引與先前在`hash[]`中存儲的值的差。 如果此差異大于`maxsize`,則更新`maxsize`。 7. 為了處理極端情況(全 1 和全 0),我們將`maxsize`初始化為 -1。 如果`maxsize`保持為 -1,則打印不存在此類子數組。 **Pseudo Code:** ``` int sum_left[n] Run a loop from i=0 to n-1 if(arr[i]==0) sumleft[i] = sumleft[i-1]+-1 else sumleft[i] = sumleft[i-1]+-1 if (sumleft[i] max) max = sumleft[i]; Run a loop from i=0 to n-1 if (sumleft[i] == 0) { maxsize = i+1; startindex = 0; } // Case 2: fill hash table value. If already then use it if (hash[sumleft[i]-min] == -1) hash[sumleft[i]-min] = i; else { if ((i - hash[sumleft[i]-min]) > maxsize) { maxsize = i - hash[sumleft[i]-min]; startindex = hash[sumleft[i]-min] + 1; } } return maxsize ``` ## C ``` // A O(n) program to find the largest subarray // with equal number of 0s and 1s #include <stdio.h> #include <stdlib.h> // A utility function to get maximum of two // integers int max(int a, int b) { return a > b ? a : b; } // This function Prints the starting and ending // indexes of the largest subarray with equal // number of 0s and 1s. Also returns the size // of such subarray. int findSubArray(int arr[], int n) { ????// variables to store result values ????int maxsize = -1, startindex; ????// Create an auxiliary array sunmleft[]. ????// sumleft[i] will be sum of array ????// elements from arr[0] to arr[i] ????int sumleft[n]; ????// For min and max values in sumleft[] ????int min, max; ????int i; ????// Fill sumleft array and get min and max ????// values in it.? Consider 0 values in arr[] ????// as -1 ????sumleft[0] = ((arr[0] == 0) ? -1 : 1); ????min = arr[0]; ????max = arr[0]; ????for (i = 1; i < n; i++) { ????????sumleft[i] = sumleft[i - 1] ?????????????????????+ ((arr[i] == 0) ? -1 : 1); ????????if (sumleft[i] < min) ????????????min = sumleft[i]; ????????if (sumleft[i] > max) ????????????max = sumleft[i]; ????} ????// Now calculate the max value of j - i such ????// that sumleft[i] = sumleft[j]. The idea is ????// to create a hash table to store indexes of all ????// visited values. ????// If you see a value again, that it is a case of ????// sumleft[i] = sumleft[j]. Check if this j-i is ????// more than maxsize. ????// The optimum size of hash will be max-min+1 as ????// these many different values of sumleft[i] are ????// possible. Since we use optimum size, we need ????// to shift all values in sumleft[] by min before ????// using them as an index in hash[]. ????int hash[max - min + 1]; ????// Initialize hash table ????for (i = 0; i < max - min + 1; i++) ????????hash[i] = -1; ????for (i = 0; i < n; i++) { ????????// Case 1: when the subarray starts from ????????// index 0 ????????if (sumleft[i] == 0) { ????????????maxsize = i + 1; ????????????startindex = 0; ????????} ????????// Case 2: fill hash table value. If already ????????// filled, then use it ????????if (hash[sumleft[i] - min] == -1) ????????????hash[sumleft[i] - min] = i; ????????else { ????????????if ((i - hash[sumleft[i] - min]) > maxsize) { ????????????????maxsize = i - hash[sumleft[i] - min]; ????????????????startindex = hash[sumleft[i] - min] + 1; ????????????} ????????} ????} ????if (maxsize == -1) ????????printf("No such subarray"); ????else ????????printf("%d to %d", startindex, ???????????????startindex + maxsize - 1); ????return maxsize; } /* Driver program to test above functions */ int main() { ????int arr[] = { 1, 0, 0, 1, 0, 1, 1 }; ????int size = sizeof(arr) / sizeof(arr[0]); ????findSubArray(arr, size); ????return 0; } ``` ## C++ / STL ``` // C++ program to find largest subarray with equal number of // 0's and 1's. #include <bits/stdc++.h> using namespace std; // Returns largest subarray with equal number of 0s and 1s int maxLen(int arr[], int n) { ????// Creates an empty hashMap hM ????unordered_map<int, int> hM; ????int sum = 0; // Initialize sum of elements ????int max_len = 0; // Initialize result ????int ending_index = -1; ????for (int i = 0; i < n; i++) ????????arr[i] = (arr[i] == 0) ? -1 : 1; ????// Traverse through the given array ????for (int i = 0; i < n; i++) { ????????// Add current element to sum ????????sum += arr[i]; ????????// To handle sum=0 at last index ????????if (sum == 0) { ????????????max_len = i + 1; ????????????ending_index = i; ????????} ????????// If this sum is seen before, then update max_len ????????// if required ????????if (hM.find(sum + n) != hM.end()) { ????????????if (max_len < i - hM[sum + n]) { ????????????????max_len = i - hM[sum + n]; ????????????????ending_index = i; ????????????} ????????} ????????else // Else put this sum in hash table ????????????hM[sum + n] = i; ????} ????for (int i = 0; i < n; i++) ????????arr[i] = (arr[i] == -1) ? 0 : 1; ????printf("%d to %d\n", ???????????ending_index - max_len + 1, ending_index); ????return max_len; } // Driver method int main() { ????int arr[] = { 1, 0, 0, 1, 0, 1, 1 }; ????int n = sizeof(arr) / sizeof(arr[0]); ????maxLen(arr, n); ????return 0; } // This code is contributed by Aditya Goel ``` ## Java ```java import java.util.HashMap; class LargestSubArray1 { ????// Returns largest subarray with ????// equal number of 0s and 1s ????int maxLen(int arr[], int n) ????{ ????????// Creates an empty hashMap hM ????????HashMap<Integer, Integer> hM ????????????= new HashMap<Integer, Integer>(); ????????// Initialize sum of elements ????????int sum = 0; ????????// Initialize result ????????int max_len = 0; ????????int ending_index = -1; ????????int start_index = 0; ????????for (int i = 0; i < n; i++) { ????????????arr[i] = (arr[i] == 0) ? -1 : 1; ????????} ????????// Traverse through the given array ????????for (int i = 0; i < n; i++) { ????????????// Add current element to sum ????????????sum += arr[i]; ????????????// To handle sum=0 at last index ????????????if (sum == 0) { ????????????????max_len = i + 1; ????????????????ending_index = i; ????????????} ????????????// If this sum is seen before, ????????????// then update max_len if required ????????????if (hM.containsKey(sum + n)) { ????????????????if (max_len < i - hM.get(sum + n)) { ????????????????????max_len = i - hM.get(sum + n); ????????????????????ending_index = i; ????????????????} ????????????} ????????????else // Else put this sum in hash table ????????????????hM.put(sum + n, i); ????????} ????????for (int i = 0; i < n; i++) { ????????????arr[i] = (arr[i] == -1) ? 0 : 1; ????????} ????????int end = ending_index - max_len + 1; ????????System.out.println(end + " to " + ending_index); ????????return max_len; ????} ????/* Driver program to test the above functions */ ????public static void main(String[] args) ????{ ????????LargestSubArray1 sub = new LargestSubArray1(); ????????int arr[] = { 1, 0, 0, 1, 0, 1, 1 }; ????????int n = arr.length; ????????sub.maxLen(arr, n); ????} } // This code has been by Mayank Jaiswal(mayank_24) ``` ## Python3 ```py # Python 3 program to find largest? # subarray with equal number of? # 0's and 1's.? # Returns largest subarray with? # equal number of 0s and 1s? def maxLen(arr, n):? ????# NOTE: Dictonary in python in? ????# implemented as Hash Maps.? ????# Create an empty hash map (dictionary)? ????hash_map = {}?? ????curr_sum = 0? ????max_len = 0? ????ending_index = -1? ????for i in range (0, n):? ????????if(arr[i] == 0):? ????????????arr[i] = -1? ????????else:? ????????????arr[i] = 1? ????# Traverse through the given array? ????for i in range (0, n):? ????????# Add current element to sum? ????????curr_sum = curr_sum + arr[i]? ????????# To handle sum = 0 at last index? ????????if (curr_sum == 0):? ????????????max_len = i + 1? ????????????ending_index = i? ????????# If this sum is seen before,? ????????if curr_sum in hash_map: ????????????# If max_len is smaller than new subarray ????????????# Update max_len and ending_index ????????????if max_len < i - hash_map[curr_sum]: ????????????????max_len = i - hash_map[curr_sum] ????????????????ending_index = i ????????else:? ????????????# else put this sum in dictionary? ????????????hash_map[curr_sum] = i?? ????for i in range (0, n):? ????????if(arr[i] == -1):? ????????????arr[i] = 0? ????????else:? ????????????arr[i] = 1? ????print (ending_index - max_len + 1, end =" ") ????print ("to", end = " ") ????print (ending_index) ????return max_len # Driver Code? arr = [1, 0, 0, 1, 0, 1, 1]? n = len(arr)?? maxLen(arr, n)? # This code is contributed? # by Tarun Garg ``` ## C# ``` // C# program to find the largest subarray // with equal number of 0s and 1s using System; using System.Collections.Generic; class LargestSubArray1 { ????// Returns largest subarray with ????// equal number of 0s and 1s ????public virtual int maxLen(int[] arr, int n) ????{ ????????// Creates an empty Dictionary hM ????????Dictionary<int, ???????????????????int> ????????????hM = new Dictionary<int, ????????????????????????????????int>(); ????????int sum = 0; // Initialize sum of elements ????????int max_len = 0; // Initialize result ????????int ending_index = -1; ????????int start_index = 0; ????????for (int i = 0; i < n; i++) { ????????????arr[i] = (arr[i] == 0) ? -1 : 1; ????????} ????????// Traverse through the given array ????????for (int i = 0; i < n; i++) { ????????????// Add current element to sum ????????????sum += arr[i]; ????????????// To handle sum=0 at last index ????????????if (sum == 0) { ????????????????max_len = i + 1; ????????????????ending_index = i; ????????????} ????????????// If this sum is seen before, ????????????// then update max_len ????????????// if required ????????????if (hM.ContainsKey(sum + n)) { ????????????????if (max_len < i - hM[sum + n]) { ????????????????????max_len = i - hM[sum + n]; ????????????????????ending_index = i; ????????????????} ????????????} ????????????else // Else put this sum in hash table ????????????{ ????????????????hM[sum + n] = i; ????????????} ????????} ????????for (int i = 0; i < n; i++) { ????????????arr[i] = (arr[i] == -1) ? 0 : 1; ????????} ????????int end = ending_index - max_len + 1; ????????Console.WriteLine(end + " to " + ending_index); ????????return max_len; ????} ????// Driver Code ????public static void Main(string[] args) ????{ ????????LargestSubArray1 sub = new LargestSubArray1(); ????????int[] arr = new int[] { ????????????1, ????????????0, ????????????0, ????????????1, ????????????0, ????????????1, ????????????1 ????????}; ????????int n = arr.Length; ????????sub.maxLen(arr, n); ????} } // This code is contributed by Shrikant13 ``` **輸出**: ``` 0 to 5 ``` **Complexity Analysis:** * **時間復雜度**:`O(n)`。 由于給定數組僅被遍歷一次。 * **輔助空間**:`O(n)`。 由于使用了 **hash_map** ,因此需要額外的空間。 *感謝 Aashish Barnwal 提出此解決方案。*
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看