一个twitter puddles的算法实现
今天发现了一个挺好玩的算法题,下面是它的算法描述,源自twitter
的一道面试题
twitter puddles 算法描述
数字是根据一个数组内容来描述的,最后会根据每个数字的大小来模拟一道墙的高度,最后生成一面墙,问你,当下雨的时候,这面墙可以装多少水,以1为计数单位
其实这个原理比较简单,总共有下面几个要点:
- 最左边和最右边肯定不能装水
- 装水的高度依赖自身左右两侧内两个最大值其中的最小值
下面我们用js
来简单的实现它
/**
* 计算以数组项为高度的墙能装多少水
* 数组例子 [2,5,1,2,3,4,7,7,6,9]
**/
function getWaterCounts(arg){var i = 0,j = 0,count = 0;// 第一项和最后一项都得排除for(i = 1; i < arg.length - 1; i++){var left = Math.max.apply(null, arg.slice(0, i + 1));var right = Math.max.apply(null, arg.slice(i, arg.length));var min = left >= right ? right : left;// 以左右两边最大值内小的为准// 假如当前值大于或者等于这个值什么都不做if(arg[i] < min){count += min - arg[i];}}console.log(count);
}
getWaterCounts([2,5,1,2,3,4,7,7,6,9]); // 11
总结
嘿嘿,实现是不是挺简单的,其实只要你愿意思考,用js
可以实现很多好玩的东西.
一个twitter puddles的算法实现相关推荐
- 根据twitter的snowflake算法生成唯一ID
C#版本 /// <summary>/// 根据twitter的snowflake算法生成唯一ID/// snowflake算法 64 位/// 0---0000000000 000000 ...
- 基于Twitter的Snowflake算法实现的分布式ID生成器
/*** 基于Twitter的Snowflake算法实现的分布式ID生成器* ------------------------------------------------------------- ...
- snowflake做主键 自增_GitHub - MarvinYu/snowflake: Twitter的雪花算法(snowflake)分布式自增ID...
snowflake 分布式id生成算法的有很多种,Twitter的雪花算法(SnowFlake)就是其中经典的一种. SnowFlake算法的优点: 生成ID时不依赖于数据库,完全在内存生成,高性能高 ...
- 实验三:实现一个大素数生成算法
一.实验内容 掌进一步掌握大素数分解的一般原理和实现方法.能用间接方法实现大素数分解.用代码实现Solovay-Strassen素性测试法或Miller-Rabin素性测试法. 二.分实现一个大素数生 ...
- 大数据DDos检测——DDos攻击本质上是时间序列数据,t+1时刻的数据特点和t时刻强相关,因此用HMM或者CRF来做检测是必然! 和一个句子的分词算法CRF没有区别!...
DDos攻击本质上是时间序列数据,t+1时刻的数据特点和t时刻强相关,因此用HMM或者CRF来做检测是必然!--和一个句子的分词算法CRF没有区别! 注:传统DDos检测直接基于IP数据发送流量来识别 ...
- 一个标准的PID算法
一个标准的PID算法 #include<reg51.h> #include<intrins.h> #include<math.h> #include<stri ...
- lru算法实现 redis_使用数组与双向链表实现一个简单的LRU算法
什么是LRU算法? redis大家都玩过吧,你们好奇redis内存数据存满之后会发生什么吗?抛出异常?禁止使用?还是删除数据?其实redis设计了一种内润淘汰机制. noeviction(默认策略): ...
- php排序地区,怎么在php项目中实现一个地区分类排序算法
怎么在php项目中实现一个地区分类排序算法 发布时间:2020-12-30 16:11:30 来源:亿速云 阅读:86 作者:Leah 怎么在php项目中实现一个地区分类排序算法?相信很多没有经验的人 ...
- 从零实现一个3D目标检测算法(3):PointPillars主干网实现(持续更新中)
在上一篇文章<从零实现一个3D目标检测算法(2):点云数据预处理>我们完成了对点云数据的预处理. 从本篇文章,我们开始正式实现PointPillars网络,我们将按照本系列第一篇文章介绍的 ...
- 从零实现一个3D目标检测算法(2):点云数据预处理
在上一篇文章<从零实现一个3D目标检测算法(1):3D目标检测概述>对3D目标检测研究现状和PointPillars模型进行了介绍,在本文中我们开始写代码一步步实现PointPillars ...
最新文章
- To connect to files.phpmyadmin.net insecurely, use `--no-check-certificate‘
- python判断两个值是否相等_Python--比较两个字典部分value是否相等
- Ubuntu终止进程的方法(kill、pkill、killall)
- 【错误记录】Groovy 闭包使用报错 ( 闭包中不能直接使用外部对象的方法 | 需要先设置 delegate 代理 )
- PV、UV、IP的区别
- 【学术相关】研究生第一篇学术论文常犯问题总结
- 【运筹与优化】单纯形法解线性规划问题(matlab实现)
- mysql 只开放某个表_MySQL只恢复某个库或某张表
- java7 完整版_21天学通Java 第7版 ([美]罗格斯-卡登海德) 中文pdf完整版[23MB]
- 1997年考研数学一解析pdf
- Win10修改登录/锁屏界面背景
- 手把手教你写网络爬虫:Web应用的漏洞检测实战篇!
- [转](42)驱动中使用全局变量
- [渝粤教育] 上海师范大学 英汉互译 参考 资料
- RMAN CROSSCHECK命令 说明
- Google Earth网页版初探
- oracle数据库ORA-报错大全
- 计算机网络原理第二章答案
- ai画面怎么调大小_AI中怎么才能把图像等比例扩大或缩小尺寸?
- 高中生活--第5篇--学英语的故事(四大难题)
热门文章
- dilated conv带孔卷积、pooling层提高感受野 反卷积 的理解
- 7-4 哈夫曼编码 (30分)
- Unity太空大战游戏-Socket网络通信教学示例
- qt quick-QML虚拟软键盘V2版本(手机键盘弹出机制)-支持换肤、动态加载移除语言
- C++ Primer 第四章学习 —— “表达式”
- 推荐6款习惯养成APP,送给想要提升自己的人!
- JS 基础: 你真的了解 console 吗?
- JavaWeb学习-动态代理-2-invoke()方法和动态代理Waiter类练习
- 如何识别一加6手机图片中的文字?
- word里面的ctrl+z快捷键无效|ctrl+z 无效 最新解决方法