博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
LeetCode 42 javascript解决方案
阅读量:6757 次
发布时间:2019-06-26

本文共 2015 字,大约阅读时间需要 6 分钟。

思路

代码

/** * @param {number[]} height * @return {number} */var trap = function(height) {    function cutUselessInTheSides(list = height){        let p = 0;        while((p < list.length - 1) && (list[p] <= list[p + 1])){            p++;        }        list = list.slice(p);        p = list.length - 1;        while((p > 0) && (list[p - 1] >= list[p])){            p--;        }        list = list.slice(0, p + 1);        return list;    }    function calSum(list){        let max = Math.min(list[0], list[list.length - 1]);        let sum = 0;        for(let i = 0; i < list.length; ++i){            let delta = max - list[i];            sum += (delta > 0 ? delta : 0);        }        return sum;    }    function calculator(list = height, total = 0){        if(list.length < 3){            return total;        }        list = cutUselessInTheSides(list);        if(list.length < 3){            return total;        }        let firstBiggerIndex = -1;        for(let i = 1; i < list.length; ++i){            if(list[i] >= list[0]){                firstBiggerIndex = i;                break;            }        }        if(firstBiggerIndex >= 0){ // 找到了            let leftList = list.slice(0, firstBiggerIndex + 1);            total += calSum(leftList);            list = list.slice(firstBiggerIndex);            return calculator(list, total);        }        // 从右往左找        for(let i = list.length - 2; i >= 0; --i){            if(list[i] >= list[list.length - 1]){                firstBiggerIndex = i;                break;            }        }        if(firstBiggerIndex >= 0){ // 找到了            let rightList = list.slice(firstBiggerIndex);            total += calSum(rightList);            list = list.slice(0, firstBiggerIndex + 1);            return calculator(list, total);        }        else{            return total;        }    }    return calculator();};复制代码

感想

这题我刷了一个多月,思路还是睡觉的时候想到的,虽然很早就想到了解决思路,每次下手都觉得麻烦 就拖到现在,没想到一次性提交成功了,效率也超过了一半以上的提交,很开心。

转载于:https://juejin.im/post/5b4da93e5188251ac446dbf3

你可能感兴趣的文章
jQuery-easyui下的多表关联的增删改操作
查看>>
我的友情链接
查看>>
兼容IE,Firefox,CSS3 opacity透明度
查看>>
读取Hive中所有表的表结构,并在新Hive库中创建表,索引等
查看>>
XenServer部署系列之02——系统安装及许可
查看>>
linux下FTP服务器搭建
查看>>
程序的查询 ps - 笔记1
查看>>
Conversion to Dalvik format failed with error 1的又一种情形
查看>>
nodejs抓取数据二(列表解析)
查看>>
TextView中实现可点击链接的显示
查看>>
HAOI 树上操作
查看>>
深刻理解Python中的元类(metaclass)以及元类实现单例模式
查看>>
java随机生成n个不相同的整数
查看>>
DIV+CSS基础
查看>>
使用JS完成首页定时弹出广告图片
查看>>
codeforces 500c New Year Book Reading 【思维】
查看>>
Auto reloading enabled
查看>>
GitHub的使用方法
查看>>
AT3576 Popping Balls
查看>>
springboot入门_多数据源
查看>>