twitter面试题内容

“看下面这个图片”

“在这个图片里我们有不同高度的墙。这个图片由一个整数数组所代表,数组中每个数是墙的高度。上边的图可以表示为数组[2,5,1,2,3,4,7,7,6]”

“假如开始下雨了,那么墙之间的水坑能够装多少水呢?”

闲来无事给出一份解决此问题的lua代码(https://gist.github.com/jianchenglee/7262518):

-- author ljc

-- 1) find the max value, split the array to 2 array

-- 2) compute the increment ,get 2 increment array

-- 3) get the result by the increment value(if there are a minus value,then retain water,until one by one accumulation value become plus,then go on next)

waterpool={2,4,3,5,1,2,3,2,3,7,7,6,7,6,4,5}

testcase_1 = {2,5,1,2,3,4,7,7,6}

testcase_2 = {2,5,1,3,1,2,1,7,7,6}

testcase_3 = {6,1,4,6,7,5,1,6,4}

function watertotal(o)

-- v1:tempvalue total: result value


-- v_max,i_max: the biggest value and the index of the input array


-- waterpool_q1: first half increment value array waterpool_q2: secopd half increment value array


local v1,v_max,i_max,total=0,0,0,0,0;


local waterpool_q1={};


local waterpool_q2={};

local allnumber=table.maxn(o)

--1)


for i,v in ipairs(o) do


if v>v_max then


v_max=v


i_max=i


end


end

--2)


-- generate waterpool_q1


for i=1,i_max-1,1 do


--print(o[i]-v1)


table.insert(waterpool_q1,o[i]-v1)


v1=o[i]


end

-- generate waterpool_q2


v1=0


for i=allnumber,i_max,-1 do


--print(o[i]-v1)


table.insert(waterpool_q2,o[i]-v1)


v1=o[i]

end

--3)


-- the result of waterpool_q1


v1=0

for i,v in ipairs(waterpool_q1) do

if v<0 and v1>=0 then


v1=v


total=total+math.abs(v1)


elseif (v1+v<0) then


v1=v1+v


total=total+math.abs(v1)


elseif v+v1>=0 then


v1=0

end


--print(math.abs(v1))


end

-- the result of waterpool_q1


v1=0


for i,v in ipairs(waterpool_q2) do

if v<0 and v1>=0 then


v1=v


total=total+math.abs(v1)


elseif (v1+v<0) then


v1=v1+v


total=total+math.abs(v1)


elseif v+v1>=0 then


v1=0

end


--print(math.abs(v1))


end

print(total)

end

-- test the function

watertotal(waterpool)

watertotal(testcase_1)

watertotal(testcase_2)

watertotal(testcase_3)

测试结果:

>lua -e "io.stdout:setvbuf 'no'" "waterpool.lua" 
17
10
17
13

水池问题的lua语言算法(面试题分析:我的Twitter技术面试失败了)的更多相关文章

  1. 【转载】经典10道c/c++语言经典笔试题(含全部所有参考答案)

    经典10道c/c++语言经典笔试题(含全部所有参考答案) 1. 下面这段代码的输出是多少(在32位机上). char *p; char *q[20]; char *m[20][20]; int (*n ...

  2. Lua语言中文手册 转载自网络

    Programming in LuaCopyright ® 2005, Translation Team, www.luachina.net Programming in LuaProgramming ...

  3. C语言编程规范试题(标准答案)

    C语言编程规范试题(标准答案) 一.单选题(每小题3分,共20小题60分) 1.1-1.5    B D A C B                1.6-1.10    C A D B C 1.11 ...

  4. C语言编程规范试题

    C语言编程规范试题 [说明]: 1.本试题中不考虑头文件引用问题(假定已经包含正确的头文件),C语言的标准函数都可用: 2.如果不特别说明,假定程序运行环境为:操作系统Windows 2000, VC ...

  5. 用VC编译lua源码,生成lua语言的解释器和编译器

    用VC编译lua源码,生成lua语言的解释器和编译器 1.去网址下载源码 http://www.lua.org/download.html 2.装一个VC++,我用的是VC6.0 3.接下来我们开始编 ...

  6. 51CTO专访淘宝清无:漫谈Nginx服务器与Lua语言

    http://os.51cto.com/art/201112/307610.htm 说到Web服务器,也许你第一时间会想到Apache,也许你会想到Nginx.虽然说Apache依然是Web服务器的老 ...

  7. 【quick-cocos2d-x】Lua 语言基础

    版权声明:本文为博主原创文章,转载请注明出处. 使用quick-x开发游戏有两年时间了,quick-x是cocos2d-Lua的一个豪华升级版的框架,使用Lua编程.相比于C++,lua的开发确实快速 ...

  8. lua语言入门之Sublime Text设置lua的Build System

    转自: http://blog.csdn.net/wangbin_jxust/article/details/8911956 最近开始学习LUA语言,使用Sublime Text作为编辑器,不得不说, ...

  9. 编译并使用Lua语言

    Lua是一个小巧的脚本语言,该语言设计的目的是为了嵌入应用程序中,从而为应用程序提供灵活的扩展和定制功能. 可扩展性.Lua的扩展性非常卓越,可以通过Lua代码或C代码扩展,很多功能可以通过外部库来扩 ...

随机推荐

  1. Nginx 的 docker 部署

    1.输入命令 docker pull nginx:1.15 拉取 nginx 的镜像: 2.使用 docker images 查看拉取到的镜像信息: 3.在主机上创建用于映射的目录 mkdir -p ...

  2. The valid characters are defined in RFC 7230 and RFC 3986问题

    这个问题困扰了我接近两天了!尼玛!网上搜了很多资料,有的给出了解决方案,然后下面的评论说按照楼主做的,没有成功,我一做也确实没有成功.设置了断点,一步一步跟进去看,还是没有头绪.不过有一点可以确认的是 ...

  3. 八大排序算法的Java代码实现

    简单插入排序 public class QuickSort { private static void quickSort(int [] a, int low, int high){ if (low ...

  4. Creating Your Own PHP Helper Functions In Laravel

    By Hamza Ali LAST UPDATED AUG 26, 2018  12,669 104 Laravel provides us with many built-in helper fun ...

  5. android模拟器不能上网设置

    进行sdk目录中的platform-tools目录: adb devices 系统会罗列出所有设置 adb -s emulator- shell 最后设置网关 setprop net.dns1 192 ...

  6. walsh矩阵

    矩阵A(1) 1 矩阵A(2) 1 1 1 -1 矩阵A(2n) 由上一级矩阵组合,即用上一级矩阵的一行生成本级矩阵的一行. 生成规则是 A(2n)[k] = { A(n)[k],  A(n)[k] ...

  7. 【WebService】使用JDK开发WebService(二)

    WebService的开发手段 1.使用JDK开发(1.6及以上版本) 2.使用CXF框架开发(工作中) WebService的组成 1.服务器端 2.客户端 使用JDK开发WebService a. ...

  8. spring 学习 一 spring 介绍

    Spring 是一个开源框架,是为了解决企业应用程序开发复杂性而创建的.框架的主要优势之一就是其分层架构,分层架构允许您选择使用哪一个组件,同时为 J2EE 应用程序开发提供集成的框架. Spring ...

  9. mybatis学习三 数据库连接池技术

    1.在内存中开辟一块空间,存放多个数据库连接对象.就是Connection的多个实例2. 连接池技术有很多,c3p0,dbcp,druid,以及JDBC Tomcat Pool, JDBC Tomca ...

  10. MySQL中使用SHOW PROFILE命令分析性能的用法整理

    show profile是由Jeremy Cole捐献给MySQL社区版本的.默认的是关闭的,但是会话级别可以开启这个功能.开启它可以让MySQL收集在执行语句的时候所使用的资源.为了统计报表,把pr ...