比較每個索引處的元素並調整它們直到它們匹配,以減少給定數組之間相應索引處不一致元素的數量。根據需要進行調整,同時迭代數組。數組將變得更加相似,並且不相等元素的比例將因此減少。透過減少它們在相應位置的差異,該過程旨在增加陣列之間的相似性。最終目標是產生每個索引處具有相同元素的數組,這將減少不相等元素的數量。
雜湊方法
排序方法
在雜湊方法中,我們首先為其中一個數組建立一個散列表,以便在比較數組之間的檔案時減少不相等分量的數量。此時,當我們重複矩數組時,我們會查看雜湊表中每個組件的頻率。如果找到該組件,則將其保留;如果不是,則使用哈希表中最接近的協調組件來代替它。此過程的結果是,相應索引處的不相等元素較少,並且兩個陣列變得更加相似。此方法的效率是一個優勢,因為它可以在平均情況和最佳情況下實現線性時間複雜度 O(N) 所需的相似性。
第一個數組的每個元素都應作為鍵添加,其頻率作為值添加到哈希表中。
設定一個指針,以便可以循環存取第二個數組。
b。如果是這樣,請保留該元素。
如果沒有的話,找到最接近的匹配項中頻率最低的哈希表元素。
d。將第二個數組中的現有元素變更為最接近的匹配項。
演算法
將兩個陣列(稱為 array1 和 array2)的長度分別設為 m 和 n。
#include <iostream> #include <vector> using namespace std; vector<int> findLCS(vector<int>& array1, vector<int>& array2) { return {}; } int minimizeUnequalCount(vector<int>& array1, vector<int>& array2) { return 0; } void modifyArrays(vector<int>& array1, vector<int>& array2) { } int main() { vector<int> array1 = {1, 3, 5, 7, 9}; vector<int> array2 = {2, 4, 5, 8, 9}; vector<int> lcs = findLCS(array1, array2); cout << "Longest Common Subsequence: "; for (int num : lcs) { cout << num << " "; } cout << endl; int unequalCount = minimizeUnequalCount(array1, array2); cout << "Count of Unequal Elements after adjustment: " << unequalCount << endl; modifyArrays(array1, array2); cout << "Modified Array 1: "; for (int num : array1) { cout << num << " "; } cout << endl; cout << "Modified Array 2: "; for (int num : array2) { cout << num << " "; } cout << endl; return 0; }
Longest Common Subsequence: Count of Unequal Elements after adjustment: 0 Modified Array 1: 1 3 5 7 9 Modified Array 2: 2 4 5 8 9
有两种技术可用于减少两个给定数组之间对应索引处不相等元素的数量:哈希方法和排序方法。哈希方法为一个数组构建哈希表,并迭代地用哈希表中找到的最接近的匹配替换另一个数组中的元素。对于平均和最佳情况,这将实现O(N)的线性时间复杂度。另一方面,排序方法在迭代两个数组时按升序对它们进行排序,并将元素调整为较小的值。尽管它可能不总是产生最佳结果,但它使数组更具可比性。这两种方法都成功地减少了不一致元素的数量,增加了数组的相似性,并降低了对应位置的不一致元素的总数。
以上是將給定數組之間對應索引處的不相等元素的數量最小化的詳細內容。更多資訊請關注PHP中文網其他相關文章!