lua判断表中数据是否连续,0可以代表任何数

最近看到有lua面试题,挺有意思的,一张表中有若干个数,0可以代表任何数

比如有张表{9, 2, 4, 1, 3, 0, 0, 0, 0},按照规则这张表中的四个0可以用来代表5,6,7,8,那么这张表是连续的,判断思路我是这样的

1、先遍历表,计算出0的个数

2、对表进行排序

3、计算相邻数之间的差值x,明显,如果x为1,那么这两个是连续的,如果不为1,那么x-1就是这两个数之间需要补充的数的个数,比如6和4的差x = 2,那么6和4之间需要补充的数就是x - 1 = 1,补一个5就可以连续了

具体代码如下

local nums = {9, 2, 4, 1, 3, 0, 0, 0, 0}
local
function cal(nums) local n = #nums print("n = ", n) --计算0的数量 local zero = 0 for i=1,n do print(nums[i]) if nums[i] == 0 then zero = zero + 1 end end print("zero = ", zero) --排序 local sortt = function(a, b) return a < b end table.sort( nums, sortt ) local pre = nums[1] --计算总的补充数量 local x = 0 for i=2,n do print(nums[i]) local tx = nums[i] - pre x = x + tx - 1 pre = nums[i] end print("x = ", x) --如果x比0的数量少,那么可以将数列补充成连续的 if x <= zero then print("is ok") else print("is not ok") end end

cal(nums)
原文地址:https://www.cnblogs.com/leisc/p/6046313.html