当前位置: 首页 > news >正文

做交友类网站适合什么cms空间刷赞网站推广

做交友类网站适合什么cms,空间刷赞网站推广,企业建设网站企业,群晖docker wordpress42. 接雨水 暴力法 for循环遍历每一个柱子,内层for循环找到左边和右边比它高的柱子 时间复杂度 n^2 优化:添加一个预处理 定义一个数组,存放该柱子右边比他高的柱子是哪一个 再用一个数组,存放该柱子左边比他高的柱子是哪一个 …

42. 接雨水

暴力法

for循环遍历每一个柱子,内层for循环找到左边和右边比它高的柱子
时间复杂度 n^2

优化:添加一个预处理
定义一个数组,存放该柱子右边比他高的柱子是哪一个
再用一个数组,存放该柱子左边比他高的柱子是哪一个

单调栈

单调栈:在每日温度题目中,其要找到右边第一个比他大的温度;适配到本题,就是找到当前柱子左边&右边 第一个比它大的温度

遍历一次就能处理完:当前遍历的元素比栈口元素大的时候,说明栈口柱子右边比它大的那个柱子找到了,它左边比它大的柱子怎么找?在栈中。
在这里插入图片描述

class Solution {public int trap(int[] height){int size = height.length;if (size <= 2) return 0;// in the stack, we push the index of array// using height[] to access the real heightStack<Integer> stack = new Stack<Integer>();stack.push(0);int sum = 0;for (int index = 1; index < size; index++){int stackTop = stack.peek();if (height[index] < height[stackTop]){stack.push(index);}else if (height[index] == height[stackTop]){// 因为相等的相邻墙,左边一个是不可能存放雨水的,所以pop左边的index, push当前的indexstack.pop();stack.push(index);}else{//pop up all lower valueint heightAtIdx = height[index];while (!stack.isEmpty() && (heightAtIdx > height[stackTop])){int mid = stack.pop();if (!stack.isEmpty()){int left = stack.peek();int h = Math.min(height[left], height[index]) - height[mid];int w = index - left - 1;int hold = h * w;if (hold > 0) sum += hold; //加不加大于0都一样stackTop = stack.peek();}}stack.push(index);}}return sum;}
}
  • 自己再做了一遍
class Solution {public int trap(int[] height) {if(height.length <= 2) {return 0;}Stack<Integer> st = new Stack<>(); //存的是下标st.push(0);int sum = 0;for(int i=1; i<height.length; i++) {// i 下标  height[i]值// height[st.peek()]  height[st.pop()]if(height[i] < height[st.peek()]) {st.push(i);} else if(height[i] == height[st.peek()]) {st.pop();st.push(i); //虽然值是一样的,但下标不一样} else { //发现凹槽了// int stackTop = st.peek();int right = i; //凹槽右侧高度while(!st.empty() && height[right] > height[st.peek()]) {int mid = st.pop();//凹点if(!st.empty()) {int left = st.peek();int w = right-left-1;int h = Math.min(height[left], height[right]) - height[mid];int hold = h*w;sum += hold;}}st.push(i);//体积 = w * h }}return sum;}
}

双指针

与单调栈不同的是,双指针求体积求的是 竖向的体积

class Solution {public int trap(int[] height) {int len = height.length;if(len <= 2) return 0;int[]maxLeft = new int[len];int[]maxRight = new int[len];maxLeft[0] = height[0];for(int i=1; i<len; i++) {maxLeft[i] = Math.max(height[i], maxLeft[i-1]);}maxRight[len-1] = height[len-1];for(int i=len-2; i>=0; i--) {// maxLeft[i] = Math.max(height[i], maxLeft[i-1]);maxRight[i] = Math.max(height[i],maxRight[i+1]);}int sum = 0;for(int i=0; i<len; i++) {int h = Math.min(maxLeft[i],maxRight[i]) - height[i];if(h>0) sum+=h; // h*1}return sum;}
}

84.柱状图中最大的矩形

emmm 和接雨水到底哪里一样了???

暴力法 双指针

遍历每一根柱子,向左向右找比它小的边界,算出面积并求最大
优化:两个数组,一个存放i左边比他矮的,一个存放i右边

单调栈

写法不一样了,栈中元素 从栈顶到栈底要 从大到小。

遍历一次就能处理完:当前遍历的元素比栈口元素小的时候,说明栈口柱子右边比它小的那个柱子找到了,它左边比它小的柱子怎么找?在栈中。

  • 首尾补0
    尾补0:[2,4,6,8]
    首补0:[8,6,4,2]
class Solution {public int largestRectangleArea(int[] heights) {int[]newHeight = new int[heights.length+2];for(int i=1; i<=heights.length; i++) {newHeight[i] = heights[i-1];}heights = newHeight; //重定向Stack<Integer> st = new Stack<Integer>();st.push(0);int res=0;for(int i=1; i<heights.length; i++) {if(heights[i]>heights[st.peek()]) {st.push(i);} else if(heights[i] == heights[st.peek()]) {st.pop();st.push(i);} else {//栈可能为空吗?while(heights[i] < heights[st.peek()]) {int mid = st.peek();st.pop();int left = st.peek();int right = i;int w = right - left - 1;int h = heights[mid];res = Math.max(res, w * h);}st.push(i);}}return res;}
}

单调栈最核心的其实是栈顶元素

http://www.yidumall.com/news/52836.html

相关文章:

  • 帮人负责做网站叫什么工作关键词分类哪八种
  • 网站建设费用有哪些方面搜索引擎排名规则
  • 本地的南通网站建设汽油价格最新调整最新消息
  • 院校网站建设对比分析实训报总结百度快照怎么优化排名
  • wordpress 简约单页网站怎么优化
  • 临汾做网站的公司谷歌 google
  • 宣传网站有哪些优化设计官网
  • 淮安做网站找哪家好客户关系管理系统
  • 汕头建站网站模板搜索引擎调词平台
  • python做网站功能测试学校seo推广培训班
  • 做老虎机网站犯法么引流推广多少钱一个
  • 网站建设数据处理国际新闻最新消息今天
  • 如何自做网站seo和sem分别是什么
  • 平面设计专业网站新闻发稿发布平台
  • 成交型网站建设价格seoul
  • 讯美深圳网站建设千万别手贱在百度上搜这些词
  • 淘宝客网站主网站功能
  • 西安网站设计公司安卓aso
  • 帮人做网站要怎么赚钱吗seo推广招聘
  • 交易平台网站怎么做灰色词首页排名接单
  • 《网站开发与应用》试题sem代运营公司
  • 摄影做网站免费网络推广软件有哪些
  • 免费域名申请地址百度seo在线优化
  • 深圳网站定制价格表百度下载安装到桌面
  • 鞍山晟宇网站建设百度发布信息的免费平台
  • 门户网站建设重要性网页设计与制作考试试题及答案
  • 北京东城网站建设公司沈阳seo整站优化
  • 门户网站的设计最近刚发生的新闻
  • 广西住房和城乡建设官方网站搜索引擎优化的例子
  • 淇县住房和城乡建设局网站一站式媒体发布平台