找出给定数组内有多少重复的数,并打印它们对应的位置。
2020-12-13 05:23
标签:return table pre func 出现 dex pair insert val 找出给定数组内有多少重复的数,并打印它们对应的位置。 标签:return table pre func 出现 dex pair insert val 原文地址:https://www.cnblogs.com/lxyang0928/p/11140011.htmllocal t = {1, 7, 2, 5, 4, 9, 9, 7, 2, 2, 2, 5, 5}
function seekNum(t)
local dic_count = {}
local dic_pos = {}
for i=1,#t do
if dic_count[tostring(t[i])] == nil then
dic_count[tostring(t[i])] = 1
else
local index = table.indexOf(t, t[i])
dic_count[tostring(t[i])] = dic_count[tostring(t[i])] + 1
local index = table.indexOf(t, t[i])
if index > 0 then
if dic_pos[tostring(index)] == nil then
dic_pos[tostring(index)] = t[i]
end
end
dic_pos[i] = t[i]
end
end
local tb_number = {}
for number,count in pairs(dic_count) do
if tonumber(count) ~= 1 then
print("数字[ " .. number .. " ] 出现 [ " .. count .. " ]次")
tb_number[#tb_number + 1] = number
end
end
print("========================================")
local T = {}
for _,number in pairs(tb_number) do
local _t = {}
for pos,_number in pairs(dic_pos) do
if number == tostring(_number) then
table.insert(_t, pos)
end
end
T[tostring(number)] = _t
end
for k,v in pairs(T) do
print("数字[ ".. k .. " ]位置在")
print("-------------------------")
if type(v) == "table" then
for _, _v in pairs(v) do
print(_v)
end
end
print("-------------------------")
end
end
function table.indexOf(array, value)
if array then
local i, max = 1, #array
while i do
if array[i] == value then
return i
end
i = i + 1
end
end
return -1
end
seekNum(t)
上一篇:PHP根据图片制作缩略图