• 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)
  • 相关阅读:
    app 后端技术
    别为大公司拼命
    ifconfig 工具
    route工具
    ping 和 traceroute 命令
    IP路由选择
    TCP的那些事儿(下)
    TCP的那些事儿(上)
    Openresty 与 Tengine
    Excel.Application SaveAs 把excel转换为html
  • 原文地址:https://www.cnblogs.com/leisc/p/6046313.html
Copyright © 2020-2023  润新知