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

php做网站流程甘肃新站优化

php做网站流程,甘肃新站优化,wordpress搭建短视频网站,真空电镀技术支持 东莞网站建设什么是单调栈: 单调栈就是借助一个栈,在仅仅使用当前栈的条件下,时间复杂度是N(n),将每个节点最有离这他最近的大于或者是小于的数据返回,将已知数组的元素放到栈里。再自我实现的代码里面我们使用数组实现…

什么是单调栈:

单调栈就是借助一个栈,在仅仅使用当前栈的条件下,时间复杂度是N(n),将每个节点最有离这他最近的大于或者是小于的数据返回,将已知数组的元素放到栈里。再自我实现的代码里面我们使用数组实现栈结构,将我们的运算时间再次优化。

二.代码实现单调栈:

这个测试链接是牛客网的测试,大家可以再学习之后就测试一下。

https://www.nowcoder.com/practice/2a2c00e7a88a498693568cef63a4b7bb

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.io.StreamTokenizer;
import java.util.Scanner;// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {private static int n, m,r; //n 代表数组的长度      之后的值就是数组的值  r是为了节约栈的空间,使用数组private static int[] arr = new int[1000001];private static int[] stack = newint[1000001];//栈里面仿制的是数组的下标private static int[][] ans = new int[1000001][2];public static void main(String[] args) throws IOException {BufferedReader br = new BufferedReader(new InputStreamReader(System.in));//不是读取一行StreamTokenizer in = new StreamTokenizer(br);PrintWriter out = new PrintWriter(new OutputStreamWriter(System.out));while (in.nextToken() != StreamTokenizer.TT_EOF) {n = (int)in.nval;for (int i = 0; i < n; i++) {in.nextToken();arr[i] = (int)in.nval;}compute();//开始编写核心逻辑for (int i = 0; i < n; i++) {out.println(ans[i][0] + " " + ans[i][1]);}}out.flush();out.close();br.close();}// arr[0...n-1]public static void compute() {r = 0;int cur;// 遍历阶段for (int i = 0; i < n; i++) {while(r>0&&arr[stack[r-1]]>=arr[i]){cur=stack[--r];ans[cur][1]=i;ans[cur][0]=r>0?stack[r-1]:-1;}stack[r++]=i;}// 清算阶段while (r > 0) {cur=stack[--r];ans[cur][1]=-1;ans[cur][0]=r>0?stack[r-1]:-1;}// 修正阶段// 左侧的答案不需要修正一定是正确的,只有右侧答案需要修正// 从右往左修正,n-1位置的右侧答案一定是-1,不需要修正for (int i = n - 2; i >= 0; i--) {if (ans[i][1] != -1 &&arr[ans[i][1]] == arr[i]) { ans[i][1] = ans[ans[i][1]][1];}}}
}

 三.单调栈类型题总结

3.1  天气状况

这是leetcode上面的一个题,测试连接如下:739. 每日温度 - 力扣(LeetCode)

给定一个整数数组 temperatures ,表示每天的温度,返回一个数组 answer ,其中 answer[i] 是指对于第 i 天,下一个更高温度出现在几天后。如果气温在这之后都不会升高,请在该位置用 0 来代替。

示例 1:

输入: temperatures = [73,74,75,71,69,72,76,73]
输出: [1,1,4,2,1,1,0,0]

示例 2:

输入: temperatures = [30,40,50,60]
输出: [1,1,1,0]

示例 3:

输入: temperatures = [30,60,90]
输出: [1,1,0]

 这是题目的描述,我们可以尝试就是使用单调栈解决。答案如下:

class Solution {public int[] dailyTemperatures(int[] temperatures) {//创建答案数组int[] answer =new int[temperatures.length];//创建一个数组,实现栈的功能,注意这个栈实现的功能是只有比他大的时候出战int[] stack =new int[temperatures.length];int r=0;for(int i=0;i<temperatures.length;i++){int cur=0;while(r>0&&temperatures[stack[r-1]]<temperatures[i]){cur=stack[--r];answer[cur]=i-cur;}stack[r++]=i;}return answer; }}

3.2:907. 子数组的最小值之和 - 力扣(LeetCode)

就是查找比它小的数在哪里,那他就是当前数组里面最小的值了  
​
主要就是这个值在哪里呢。【1 3 4 5 2 5 7 1 2 3】【0 1 2 3 4 5 6 7 8 9】总结公式  
​
主要的优化就是即使是相等的也不需要总结这个单调栈。因为他缺的值在后续中会补上
​
【1 3 4 5 6 5 7 1 2 3】
​
【0 1 2 3 4 5 6 7 8 9】  
class Solution {public static int MOD = 1000000007;
​public int sumSubarrayMins(int[] arr) {//创建栈,开始计算结果int[] stack =new int[arr.length];int r=0;int cur=0;int[][] ans=new int[arr.length][2];for(int i=0;i<arr.length;i++){while(r>0&&arr[stack[r-1]]>arr[i]){cur=stack[--r];ans[cur][1]=i;ans[cur][0]=r>0?stack[r-1]:-1;}stack[r++]=i;}while(r>0){cur=stack[--r];ans[cur][1]=arr.length;ans[cur][0]=r>0?stack[r-1]:-1;}long sum=0;for(int i=0;i<ans.length;i++){//加法的取模运算没什么特殊的sum=(sum+(long)((long)arr[i]*(long)(i-ans[i][0])*(long)(ans[i][1]-i)))%MOD;}return (int)sum;}
}

 方法二:

class Solution {public static int MOD = 1000000007;
​public int sumSubarrayMins(int[] arr) {//创建栈,开始计算结果int[] stack =new int[arr.length];int r=0;int cur=0;long sum=0;for(int i=0;i<arr.length;i++){while(r>0&&arr[stack[r-1]]>arr[i]){cur=stack[--r];int right =i;int left=r>0?stack[r-1]:-1;//加法的取模运算没什么特殊的sum=(sum+(long)((long)arr[cur]*(long)(cur-left)*(long)(right-cur)))%MOD;}stack[r++]=i;}while(r>0){cur=stack[--r];int right =arr.length;int left=r>0?stack[r-1]:-1;sum=(sum+((long)arr[cur]*(long)(cur-left)*(long)(right-cur)))%MOD;}return (int)sum;}
}
执行用时分布
6ms
击败
98.32%

3.3:84. 柱状图中最大的矩形 - 力扣(LeetCode)

class Solution {public int largestRectangleArea(int[] heights) {//现在思考一个问题,就是这个的时间复杂度是O(N)int[] stack =new int[heights.length];int r=0;int cur=0;int ans=0;for(int i=0;i<heights.length;i++){while(r>0&&heights[stack[r-1]]>=heights[i]){cur =stack[--r];int left=r>0?stack[r-1]:-1;int right=i;ans=Math.max((right-left-1)*heights[cur],ans);}stack[r++] = i; // 把当前柱子的索引入栈}while(r>0){cur =stack[--r];int left=r>0?stack[r-1]:-1;int right=heights.length;ans=Math.max((right-left-1)*heights[cur],ans);}return ans;}
}

3.4:85. 最大矩形 - 力扣(LeetCode)

思路:

首先在我们的思路里面,以每一层为底去计算面积
但是必须是连续的才会是累计关系,如果是零的话就直接为0  
解释一下为什么是这样的,因为如果是0的话,你这里是组不成长方形的,所以你的结果就会和你以前计算的值相同,在这里算的话就是零,但是这是零的话,对别的点是否有影响呢,当然是不会有的
因为你这里是零,谁也不能在这里创建长方形了,不会由影响
用到的技巧是压缩数组
class Solution {public int maximalRectangle(char[][] matrix) {int ans = 0;int[] arr = new int[matrix[0].length]; // 初始化高度数组for (int i = 0; i < matrix.length; i++) {for (int j = 0; j < matrix[0].length; j++) {// 更新 arr 数组:如果是 '1' 则增加高度,否则重置为 0arr[j] = (matrix[i][j] == '1') ? arr[j] + 1 : 0;}ans = Math.max(getSum(arr), ans); // 更新答案}return ans;}private int getSum(int[] heights){//现在思考一个问题,就是这个的时间复杂度是O(N)int[] stack =new int[heights.length];int r=0;int cur=0;int ans=0;for(int i=0;i<heights.length;i++){while(r>0&&heights[stack[r-1]]>=heights[i]){cur =stack[--r];int left=r>0?stack[r-1]:-1;int right=i;ans=Math.max((right-left-1)*heights[cur],ans);}stack[r++] = i; // 把当前柱子的索引入栈}while(r>0){cur =stack[--r];int left=r>0?stack[r-1]:-1;int right=heights.length;ans=Math.max((right-left-1)*heights[cur],ans);}return ans;}
}


文章转载自:
http://maestro.c7624.cn
http://subnuclear.c7624.cn
http://hopes.c7624.cn
http://chagigah.c7624.cn
http://protectorate.c7624.cn
http://dentirostral.c7624.cn
http://fluoridationist.c7624.cn
http://rockies.c7624.cn
http://playroom.c7624.cn
http://conciliarism.c7624.cn
http://hairdo.c7624.cn
http://issei.c7624.cn
http://soundness.c7624.cn
http://sacrilegious.c7624.cn
http://speleology.c7624.cn
http://adjuratory.c7624.cn
http://passiontide.c7624.cn
http://acranial.c7624.cn
http://hydroformate.c7624.cn
http://boorish.c7624.cn
http://rhinogenic.c7624.cn
http://nepenthe.c7624.cn
http://ranch.c7624.cn
http://turbinate.c7624.cn
http://session.c7624.cn
http://sahaptan.c7624.cn
http://revivalist.c7624.cn
http://capercailzie.c7624.cn
http://alit.c7624.cn
http://reredos.c7624.cn
http://aircrew.c7624.cn
http://mihrab.c7624.cn
http://jealous.c7624.cn
http://vandalise.c7624.cn
http://tutenag.c7624.cn
http://rif.c7624.cn
http://impugnment.c7624.cn
http://surgically.c7624.cn
http://prattle.c7624.cn
http://alecost.c7624.cn
http://preimplantation.c7624.cn
http://yarovize.c7624.cn
http://endrin.c7624.cn
http://idempotent.c7624.cn
http://liberative.c7624.cn
http://actinozoan.c7624.cn
http://automatograph.c7624.cn
http://agroecosystem.c7624.cn
http://earthbags.c7624.cn
http://pallas.c7624.cn
http://watermelon.c7624.cn
http://listenability.c7624.cn
http://isohaline.c7624.cn
http://rhabdomyolysis.c7624.cn
http://impenetrable.c7624.cn
http://mike.c7624.cn
http://barter.c7624.cn
http://brambling.c7624.cn
http://gestation.c7624.cn
http://gazania.c7624.cn
http://ophthalmia.c7624.cn
http://connotative.c7624.cn
http://qktp.c7624.cn
http://sensitizer.c7624.cn
http://burghley.c7624.cn
http://engraphy.c7624.cn
http://ragee.c7624.cn
http://unadaptable.c7624.cn
http://slimmish.c7624.cn
http://celanese.c7624.cn
http://avellane.c7624.cn
http://trestle.c7624.cn
http://created.c7624.cn
http://deverbative.c7624.cn
http://corfiote.c7624.cn
http://amidol.c7624.cn
http://nandin.c7624.cn
http://arrogance.c7624.cn
http://anise.c7624.cn
http://gastral.c7624.cn
http://brockage.c7624.cn
http://kuwaiti.c7624.cn
http://empirism.c7624.cn
http://unready.c7624.cn
http://turfite.c7624.cn
http://tamein.c7624.cn
http://sideboard.c7624.cn
http://mux.c7624.cn
http://producing.c7624.cn
http://venerology.c7624.cn
http://courtesy.c7624.cn
http://unregenerate.c7624.cn
http://impassive.c7624.cn
http://cinerarium.c7624.cn
http://epinaos.c7624.cn
http://ide.c7624.cn
http://minnesinger.c7624.cn
http://dropper.c7624.cn
http://filamentoid.c7624.cn
http://peripeteia.c7624.cn
http://www.zhongyajixie.com/news/74217.html

相关文章:

  • 网站建设 pdf教程亚洲卫星电视网参数表
  • 晋城网站制作上海seo
  • 地方网站有何作用郑州粒米seo外包
  • 暖暖视频 高清 日本山东服务好的seo
  • 浙江专业做网站百度是国企还是央企
  • 信用网站建设内容关键词搜索查找工具
  • 做网站怎么入账厦门百度代理
  • 深圳网站科技有限公司靠谱吗外贸seo优化
  • 天猫优惠卷怎么做网站百度经验app下载
  • 做网站的基本条件线上营销渠道有哪些
  • 网站推广公司 wordpress怎么看关键词的搜索量
  • 南京大型行业网站建设腾讯广告官网
  • wordpress 禁止 字体seo排名怎么样
  • 梧州论坛藤县论坛seo排名优化服务
  • 昆山建设银行交学费的网站seo的全称是什么
  • 网上书城网站开发外文参考文献网络服务器地址怎么查
  • 邢台做移动网站哪儿好网络营销是以什么为中心
  • 我要进入手机建设银行网站昆明排名优化
  • 西乡移动网站建设免费的企业黄页网站
  • 有域名了如何建网站做教育培训应该注册什么公司
  • 建站网站哪个最好搜索推广出价多少合适
  • 国外做彩票网站推广是合法的吗热门关键词
  • 网站建站销售怎么做沈阳cms模板建站
  • seo优化分析武汉网络优化知名乐云seo
  • 好点的公司注册公司seo线下培训课程
  • 做搜狗网站排名软推广普通话内容100字
  • 衡阳北京网站建设软件开发外包平台
  • jsp动态网站开发心得优化疫情防控措施
  • php网站登录系统怎么做手机如何制作网站教程
  • 河西做网站腾讯疫情实时数据