将给定数组之间对应索引处的不相等元素的数量最小化
比较每个索引处的元素并调整它们直到它们匹配,以减少给定数组之间相应索引处不一致元素的数量。根据需要进行调整,同时迭代数组。数组将变得更加相似,并且不相等元素的比例将因此减少。通过减少它们在相应位置的差异,该过程旨在增加阵列之间的相似性。最终目标是生成每个索引处具有相同元素的数组,这将减少不相等元素的数量。
使用方法
哈希方法
排序方法
哈希方法
在哈希方法中,我们首先为其中一个数组创建一个哈希表,以便在比较数组之间的文件时减少不相等分量的数量。此时,当我们重复矩数组时,我们会查看哈希表中每个组件的频率。如果找到该组件,则将其保留;如果不是,则使用哈希表中最接近的协调组件来代替它。此过程的结果是,相应索引处的不相等元素更少,并且两个数组变得更加相似。该方法的效率是一个优势,因为它可以在平均情况和最佳情况下实现线性时间复杂度 O(N) 所需的相似性。
算法
第一个数组的每个元素都应该作为键添加,并且它们的频率作为值添加到哈希表中。
设置一个指针,以便您可以循环访问第二个数组。
a。确定第二个数组中的每个元素是否存在于哈希表中。
b.如果是这样,请保留该元素。
如果没有的话,找到最接近的匹配项中频率最低的哈希表元素。
d。将第二个数组中的现有元素更改为最接近的匹配项。
直到指针到达第二个仓库的,重复步骤3再次执行
由于仓库的存在,相应索引处的不符合元素数量现在将达到最低水平
修改后的第二个数组中存在与第一个数组所需的相似性。
示例
雷雷输出
雷雷最大独立集(MIS)方法
我们使用动态规划方法来寻找给定存储之间的终止公共子序列(LCS),以最小化对应索引处不足够元素的数量。为了跟踪两个存储中所有可能排列的元素的LCS长度,我们创建了一个二维表。为了减少差异,需要改变的元素可以通过回溯LCS来找到。通过LCS之外的元素来匹配修改LCS,确保阵列之间更高的相似度。通过优化阵列来共享一个公共子序列,这种动态规划技术有效地降低了不确定元素的数量。
算法
将两个数组(称为 array1 和 array2)的长度分别设置为 m 和 n。
要存储两个数组中所有可能的元素组合的 LCS 长度,请创建一个大小为 (m+1) x (n+1) 的 2D 表 DP。
使用两个已解决的循环来强调1和2号集群中的每个组件:
设置 DP[i][j] = DP[i-1]。 [j-1] 如果当前列表上的组件相同,则为 1。
如果组件发生变化,请将 DP[i][j] 增加到 DP[i-1][j] 和 DP[i][j-1] 之间最值得注意的可能值。
从 DP[m][n] 向后跟随 LCS 到 DP[0][0]:
如果array1[i-1]和array2[j-1]的元素被提升了,将array1[i-1]的紫色移动到DP[i-1][j-1]放置array1[i- 1]合并到最后一个公共子序列中
根据DP中哪个尊重度较高,移动到已清空的DP[i][j-1]或者向上移动到DP[i-1][j](如果它们发生了变化)
两个数组中LCS之外的元素必须在回溯LCS后更改为与LCS匹配,以减少不相等元素的数量。
调整后的数组的相似度会增加,比较列表时不等分量的数量会减少。
Example
#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
Conclusion
有两种技术可用于减少两个给定数组之间对应索引处不相等元素的数量:哈希方法和排序方法。哈希方法为一个数组构建哈希表,并迭代地用哈希表中找到的最接近的匹配替换另一个数组中的元素。对于平均和最佳情况,这将实现O(N)的线性时间复杂度。另一方面,排序方法在迭代两个数组时按升序对它们进行排序,并将元素调整为较小的值。尽管它可能不总是产生最佳结果,但它使数组更具可比性。这两种方法都成功地减少了不一致元素的数量,增加了数组的相似性,并降低了对应位置的不一致元素的总数。
以上是将给定数组之间对应索引处的不相等元素的数量最小化的详细内容。更多信息请关注PHP中文网其他相关文章!

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

热门话题

C语言数据结构:树和图的数据表示与操作树是一个层次结构的数据结构由节点组成,每个节点包含一个数据元素和指向其子节点的指针二叉树是一种特殊类型的树,其中每个节点最多有两个子节点数据表示structTreeNode{intdata;structTreeNode*left;structTreeNode*right;};操作创建树遍历树(先序、中序、后序)搜索树插入节点删除节点图是一个集合的数据结构,其中的元素是顶点,它们通过边连接在一起边可以是带权或无权的数据表示邻

文件操作难题的真相:文件打开失败:权限不足、路径错误、文件被占用。数据写入失败:缓冲区已满、文件不可写、磁盘空间不足。其他常见问题:文件遍历缓慢、文本文件编码不正确、二进制文件读取错误。

文章讨论了在C中有效使用RVALUE参考,以进行移动语义,完美的转发和资源管理,重点介绍最佳实践和性能改进。(159个字符)

C35 的计算本质上是组合数学,代表从 5 个元素中选择 3 个的组合数,其计算公式为 C53 = 5! / (3! * 2!),可通过循环避免直接计算阶乘以提高效率和避免溢出。另外,理解组合的本质和掌握高效的计算方法对于解决概率统计、密码学、算法设计等领域的许多问题至关重要。

本文讨论了使用C中的移动语义来通过避免不必要的复制来提高性能。它涵盖了使用std :: Move的实施移动构造函数和任务运算符,并确定了关键方案和陷阱以有效

C语言函数是代码模块化和程序搭建的基础。它们由声明(函数头)和定义(函数体)组成。C语言默认使用值传递参数,但也可使用地址传递修改外部变量。函数可以有返回值或无返回值,返回值类型必须与声明一致。函数命名应清晰易懂,使用驼峰或下划线命名法。遵循单一职责原则,保持函数简洁性,以提高可维护性和可读性。

C语言函数名定义包括:返回值类型、函数名、参数列表和函数体。函数名应清晰、简洁、统一风格,避免与关键字冲突。函数名具有作用域,可在声明后使用。函数指针允许将函数作为参数传递或赋值。常见错误包括命名冲突、参数类型不匹配和未声明的函数。性能优化重点在函数设计和实现上,而清晰、易读的代码至关重要。

std::unique 去除容器中的相邻重复元素,并将它们移到末尾,返回指向第一个重复元素的迭代器。std::distance 计算两个迭代器之间的距离,即它们指向的元素个数。这两个函数对于优化代码和提升效率很有用,但也需要注意一些陷阱,例如:std::unique 只处理相邻的重复元素。std::distance 在处理非随机访问迭代器时效率较低。通过掌握这些特性和最佳实践,你可以充分发挥这两个函数的威力。
