一个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可以实现很多好玩的东西.


目录
相关文章
|
2月前
|
机器学习/深度学习 资源调度 安全
【现代密码学】笔记5--伪随机置换(分组加密)《introduction to modern cryphtography》
【现代密码学】笔记5--伪随机置换(分组加密)《introduction to modern cryphtography》
25 0
|
6月前
Twitter 应用的优缺点分析
Twitter 应用的优缺点分析
126 0
|
11月前
|
机器学习/深度学习 算法 Scala
Twitter推荐算法解读
最近 Twitter 开源了其最宝贵的财产——推荐算法!本文将带你了解 Twitter 是如何做内容推荐的。
600 0
Twitter推荐算法解读
DHL
|
算法 Java Android开发
Twitter 上有趣的代码
这是海外一位 Kotlin GDE 大佬,在 Twitter 上分享的一段代码,你能快速的说出正确的结果吗
DHL
137 0
Twitter 上有趣的代码
|
机器学习/深度学习 算法 搜索推荐
Twitter 算法开源究竟会是什么样的?
本文最初发布于 Travis Fischer 的个人博客。
333 0
Twitter 算法开源究竟会是什么样的?
|
机器学习/深度学习 算法 程序员
五分钟知识科普:什么是 RSA 算法 | 算法必看系列二十八
RSA 的安全性依赖于大数分解,因此 RSA 算法加密安全性较高。但是,RSA 算法为保证安全性,会大大提升密钥长度,导致运算速度变慢。这导致它在大量数据加密时并不适用。
五分钟知识科普:什么是 RSA 算法 | 算法必看系列二十八
|
算法 数据安全/隐私保护 数据中心
Google发布CityHash系列散列算法
Google发布了 CityHash系列字符串散列算法。今天发布的有两种算法:CityHash64 与 CityHash128。它们分别根据字串计算64和128位的散列值。这些算法不适用于加密,但适合用在散列表等处。
4523 0
|
算法 C#
谷歌百度以图搜图 "感知哈希算法" C#简单实现
/// /// 感知哈希算法 /// public class ImageComparer { /// /// 获取图片的Hashcode /// /// /// public static string GetImageHashCode(string imageName) { int width = 8; int height = 8; // 第一步 // 将图片缩小到8x8的尺寸,总共64个像素。
2134 0