You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Lua如何根据小表指定索引生成长度12的0/1标记新表

Lua 按源表生成指定长度0/1状态表实现方案

核心实现逻辑是先将源表的值预处理为哈希结构做O(1)时间复杂度的存在性判断,再在原有迭代逻辑中按判断结果填充值,避免循环内重复遍历源表带来的性能损耗。


对应示例期望输出的实现(Lua常规1索引表)

你的示例期望输出newTable = {1,0,1,0,1,0,1,0,1,0,1,0}是Lua默认的1索引顺序表,第一个元素对应迭代i=0的判断结果,直接用以下代码即可:

-- 源表
local t = {0,2,4,6,8,10}
-- 预处理:构建值存在性映射
local valueSet = {}
for _, val in ipairs(t) do
    valueSet[val] = true
end

local newTable = {}
-- 原有0-11迭代逻辑
for i = 0, 11 do
    -- 匹配到源表值填1,否则填0
    newTable[#newTable + 1] = valueSet[i] and 1 or 0
    -- 此处可插入原循环内的其他业务逻辑
end

运行后newTable的结果和你给出的预期完全一致。


索引对齐版本(新表索引与迭代i值一一对应)

如果你需要新表的索引和迭代值i完全对齐(即newTable[0]对应i=0的状态,不需要索引偏移),把循环内的赋值逻辑修改为直接指定索引即可:

local newTable = {}
for i = 0, 11 do
    newTable[i] = valueSet[i] and 1 or 0
    -- 其他业务逻辑
end

实现说明

  • 不建议在每次循环中遍历源表判断i是否存在,该写法时间复杂度为O(n*m),当迭代长度或源表长度较大时性能较差;预处理哈希映射的写法总时间复杂度为O(n+m),性能稳定。
  • 该实现完全兼容你给出的约束:源表长度始终不大于迭代总长度,不需要额外做边界处理。

内容的提问来源于stack exchange,提问作者jersmi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.30 02:21:18