演算法找陣列中的特定元素
一個 int 陣列,裡面資料無任何限制,要求求出所有這樣的數 a[i],
其左邊的數都小於等於它,右邊的數都大於等於它。
能否只用一個額外陣列和少量其它空間實現。
思路:如果能用兩個輔助陣列,那麼相對來說簡單一點,可定義陣列Min和陣列Max,其中Min[i]表示自a[i]之後的最小值(包括a[i]),Max[i]表示自a[i]之前元素的最大值。有了這兩個輔助陣列後,對於a[i],如果它大於Max[i-1]並且小於Min[i+1],那麼就符合要求。
但是題目要求是隻用一個額外陣列,其實Max陣列可以省去,完全可以邊判斷邊計算,這是因為Max[i]是自左往右計算的,而判斷時也是自左往右,兩個過程正好可以合起來。只需用一個變數Max儲存一下當前的最大值即可。下面給出兩種方法的程式碼實現。
參考程式碼:
- //函式功能 : 找元素
- //函式引數 : pArray指向陣列,len為陣列的元素個數
- //返回值 : 無
- void FindElements_Solution1(int *pArray, int len)
- {
- if(pArray == NULL || len <= 0 )
- return ;
- int *pMin = new int[len];
- int *pMax = new int[len];
- int i;
- pMax[0] = pArray[0];
- for(i = 1; i //計算自i往前最大值的輔助陣列
- pMax[i] = (pMax[i-1] >= pArray[i])? pMax[i-1]: pArray[i];
- pMin[len-1] = pArray[len-1];
- for(i = len - 2; i >= 0; i--) //計算自i開始最小值的輔助陣列
- pMin[i] = (pMin[i+1] <= pArray[i])? pMin[i+1]: pArray[i];
- if(pArray[0] <= pMin[0]) //檢查第1個元素是否滿足條件
-
cout<
' ' ; - for(i = 1; i
- {
- if(pArray[i] >= pMax[i-1] && pArray[i] <=pMin[i+1]) //滿足這個關係式的元素符合要求
-
cout<
' ' ; - }
- if(pArray[len-1] >= pMax[len-1]) //檢查第len個元素是否滿足條件
-
cout<
-
cout<
- delete [] pMin;
- delete [] pMax;
- pMin = pMax = NULL;
- }
相關文章
- 【Java】尋找陣列中“主要元素”Java陣列
- 尋找陣列中第K大的元素陣列
- 旋轉陣列中的最小元素陣列
- 陣列中每個陣列元素出現的次數陣列
- 找到兩個陣列中的公共元素陣列
- 找一個陣列中特別的數陣列
- 調整陣列元素順序演算法陣列演算法
- 返回陣列中的最大元素個數陣列
- 如何去除有序陣列中的重複元素陣列
- 查詢陣列中第K大的元素陣列
- 陣列中的第K個最大元素陣列
- java陣列中重複元素的去重Java陣列
- JavaScript獲取元素在陣列中的位置JavaScript陣列
- PHP從陣列中刪除元素的方法PHP陣列
- 陣列元素逆序陣列
- 尋找兩個有序陣列的中位數陣列
- 陣列元素的數量陣列
- java陣列元素的引用Java陣列
- 尋找陣列的中心索引陣列索引
- 力扣演算法題:尋找兩個正序陣列的中位數力扣演算法陣列
- 統計陣列元素中每個元素出現的次數陣列
- 尋找兩個正序陣列中的中位數陣列
- 計蒜客 移除陣列中的重複元素陣列
- filter在JavaScript中過濾陣列元素FilterJavaScript陣列
- js 從目標陣列中過濾掉 一個陣列元素,JS陣列
- 陣列--移除陣列中指定的元素,不改變原陣列和改變原陣列陣列
- 陣列的主元素查詢陣列
- 陣列元素劃分陣列
- golang 陣列去重 移除陣列指定元素Golang陣列
- 移除陣列 arr 中的所有值與 item 相等的元素。不要直接修改陣列 arr,結果返回新的陣列陣列
- 比較兩個陣列中是否有相同的元素陣列
- 215. 陣列中的第K個最大元素陣列
- js如何使用索引訪問陣列物件中的元素JS索引陣列物件
- leetcode-陣列中兩元素的最大乘積(Java)LeetCode陣列Java
- Array · 判斷某元素是否在陣列中陣列
- lc3041 修改陣列後最大化陣列中的連續元素數目陣列
- 153. 尋找旋轉排序陣列中的最小值(中)排序陣列
- JavaScript陣列元素全排列JavaScript陣列
- JavaScript刪除陣列元素JavaScript陣列