本文主要是介绍[AHK v2]比较两个数组的差异,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
题目
Input : arr1[] = {2, 4, 5, 7, 8, 10, 12, 15}.
arr2[] = {5, 8, 11, 12, 14, 15}.
Output : 2 4 7 10 11 14
arr1[] - arr2[] = {2, 4, 7, 10}.
arr[2] - arr1[] = {11, 14}.
SymmDiff = (arr1[] - arr2[]) UNION
(arr2[] - arr1[]).
= {2, 4, 7, 10, 11, 14}.
Input : arr1[] = {1, 3, 5, 8, 15, 27, 35}.
arr2[] = {5, 7, 8, 11, 15, 18, 35}.
Output : 1 3 7 11 18 27
arr1[] - arr2[] = {1, 3, 27}.
arr[2] - arr1[] = {7, 11, 18}.
SymmDiff = (arr1[] - arr2[]) UNION
(arr2[] - arr1[]).
= {1, 3, 7, 11, 18, 27}.
ahk v2 解题
类似合并排序算法 https://www.geeksforgeeks.org/merge-two-sorted-arrays/
找到两个排序数组的对称差异的一个有效解决方案类似于合并排序的合并过程。
我们同时遍历两个数组,如果当前两个元素不匹配,
则打印较小的元素,并在具有较小元素的数组中前进。
否则,我们将忽略这些元素,并在两个数组中继续前进。
#Requires AutoHotkey v2.0
;比较两个有序数组 中的元素差异
SortedArrayDiff(arr1, arr2) { ; https://www.geeksforgeeks.org/symmetric-difference-two-sorted-array/ ;Symmetric difference of two sorted array;also accounting for array length differencei := 1, j := 1, n := arr1.Length, m := arr2.Length, diff := []while (i <= n && j <= m) {if arr1[i] < arr2[j] {diff.Push(arr1[i]), i++} else if arr2[j] < arr1[i] {diff.Push(arr2[j]), j++} else {i++, j++}}while i <= ndiff.Push(arr1[i]), i++while j <= mdiff.Push(arr2[j]), j++return diff
}Concat(words) {delim := ","s := ""for v in wordss .= v . delimreturn s};main
arr1:=[2, 4, 5, 7, 8, 10, 12, 15]
arr2:=[5, 8, 11, 12, 14, 1]
MsgBox Concat(SortedArrayDiff(arr1, arr2))
这篇关于[AHK v2]比较两个数组的差异的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!