lua求算两个数组的交集
时间: 2023-06-22 14:42:04 浏览: 54
Lua中求两个数组的交集可以通过以下方法实现:
```lua
function intersect(a, b)
local set = {}
local res = {}
for _, v in ipairs(a) do
set[v] = true
end
for _, v in ipairs(b) do
if set[v] then
table.insert(res, v)
end
end
return res
end
-- 示例
a = {1, 2, 3, 4}
b = {3, 4, 5, 6}
c = intersect(a, b)
print(table.concat(c, ", "))
-- 输出:3, 4
```
这里使用了一个哈希表来保存数组a中出现过的元素,然后遍历数组b,如果某个元素在哈希表中也出现过,则将其添加到结果数组中。最后返回结果数组即可。
相关问题
Lua中两个数组合并成一个数组
在Lua中,两个数组可以通过table.concat函数将它们合并成一个新的数组。下面是一个示例代码:
```lua
array1 = {1, 2, 3}
array2 = {4, 5, 6}
mergedArray = {}
for i=1, #array1 do
table.insert(mergedArray, array1[i])
end
for i=1, #array2 do
table.insert(mergedArray, array2[i])
end
```
在上面的代码中,我们首先定义了两个数组array1和array2。然后,我们创建了一个新的数组mergedArray,并使用for循环将array1和array2中的元素逐一插入到mergedArray中。最终,mergedArray中包含了array1和array2中所有的元素。
使用lua 定时往两个数组存入数,并计算数组中最大最小值只差
以下是使用 Lua 实现的代码,其中包括了定时往两个数组中存入数、计算数组中最大最小值只差的功能:
```lua
-- 定义两个数组
local arr1, arr2 = {}, {}
-- 每隔1秒向数组中添加一个随机数
local function addRandomNumber()
table.insert(arr1, math.random(1, 100))
table.insert(arr2, math.random(1, 100))
end
-- 每隔2秒计算数组中最大最小值只差
local function calculateDifference()
local max1, min1, max2, min2 = arr1[1], arr1[1], arr2[1], arr2[1]
for i = 2, #arr1 do
if arr1[i] > max1 then
max1 = arr1[i]
end
if arr1[i] < min1 then
min1 = arr1[i]
end
if arr2[i] > max2 then
max2 = arr2[i]
end
if arr2[i] < min2 then
min2 = arr2[i]
end
end
local difference = math.abs(max1 - min1) + math.abs(max2 - min2)
print('Difference: ' .. difference)
end
-- 每隔1秒往两个数组中添加一个随机数
local timer1 = timer.performWithDelay(1000, addRandomNumber, 0)
-- 每隔2秒计算数组中最大最小值只差
local timer2 = timer.performWithDelay(2000, calculateDifference, 0)
```
这段代码使用了 Corona SDK 的定时器功能,可以在不阻塞主线程的情况下实现定时往数组中添加数和计算数组中最大最小值只差的功能。在实际使用时,需要根据具体需求进行调整。