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

国家企业信用信息没有网站怎么做石家庄百度推广排名优化

国家企业信用信息没有网站怎么做,石家庄百度推广排名优化,太原正规的网站制作,php网站怎么搭建环境配置Problem: 830. 单调栈 文章目录 思路解题方法复杂度Code 思路 这是一个单调栈的问题。单调栈是一种特殊的栈结构,它的特点是栈中的元素保持单调性。在这个问题中,我们需要找到每个元素左边第一个比它小的元素,这就需要使用到单调递增栈。 我们…

Problem: 830. 单调栈

文章目录

  • 思路
  • 解题方法
  • 复杂度
  • Code

思路

这是一个单调栈的问题。单调栈是一种特殊的栈结构,它的特点是栈中的元素保持单调性。在这个问题中,我们需要找到每个元素左边第一个比它小的元素,这就需要使用到单调递增栈。

我们从左到右遍历数组,对于每个元素,如果栈为空或者当前元素大于栈顶元素,就将当前元素入栈;否则,就将栈顶元素出栈,直到栈为空或者找到一个栈顶元素小于当前元素,然后将当前元素入栈。这样,栈中的元素就始终保持了单调递增的性质。

在这个过程中,每当我们要将一个元素出栈时,就找到了这个元素左边第一个比它小的元素(就是当前的栈顶元素)。我们可以在这个时候记录下这个信息。

解题方法

我们使用一个栈和一个二维数组。栈用来存储元素的索引,二维数组用来存储每个元素左边第一个比它小的元素的索引和右边第一个比它小的元素的索引。

在遍历数组的过程中,我们使用一个指针r来表示栈顶。每当我们要将一个元素i入栈时,如果栈不为空并且栈顶元素大于等于当前元素,就将栈顶元素出栈,并记录下这个元素左边第一个比它小的元素的索引(就是当前的栈顶元素)和右边第一个比它小的元素的索引(就是当前的元素i)。然后将元素i入栈。

在遍历完数组后,栈中可能还有元素。这些元素右边没有比它小的元素,所以我们将这些元素出栈,并记录下这个元素左边第一个比它小的元素的索引(就是当前的栈顶元素)。

最后,我们需要修正一下结果。因为可能存在连续的相同的元素,这些元素右边第一个比它小的元素应该是相同的。所以我们从右到左遍历数组,如果一个元素和它右边的元素相同,就将它的右边第一个比它小的元素的索引更新为它右边的元素的右边第一个比它小的元素的索引。

复杂度

时间复杂度:

O ( n ) O(n) O(n),我们只遍历了一次数组。

空间复杂度:

O ( n ) O(n) O(n),我们使用了一个栈和一个二维数组来存储信息。

Code

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.io.StreamTokenizer;public class Main {static BufferedReader in = new BufferedReader(new InputStreamReader(System.in));static PrintWriter out = new PrintWriter(new OutputStreamWriter(System.out));static StreamTokenizer sr = new StreamTokenizer(in);static int MAXN = (int) (1e5 + 10);static int n, r;static int[] arr = new int[MAXN];static int[][] ans = new int[MAXN][2];static int[] stack = new int[MAXN];public static void main(String[] args) throws IOException {n = nextInt();for (int i = 0; i < n; i++) {arr[i] = nextInt();}// 找出左边第一个比自己小的元素deal();for (int i = 0; i < n; i++) {if (ans[i][0] != -1) {out.print(arr[ans[i][0]] + " ");} else {out.print(-1 + " ");}}out.flush();}private static void deal() {// TODO Auto-generated method stubint cur;r = 0;// 计算阶段for (int i = 0; i < n; i++) {while (r > 0 && arr[stack[r - 1]] >= arr[i]) {cur = stack[--r];ans[cur][0] = r > 0 ? stack[r - 1] : -1;ans[cur][1] = i;}stack[r++] = i;}// 清算阶段while (r > 0) {cur = stack[--r];ans[cur][0] = r > 0 ? stack[r - 1] : -1;ans[cur][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];}}}static int nextInt() throws IOException {sr.nextToken();return (int) sr.nval;}}
http://www.mmbaike.com/news/28786.html

相关文章:

  • 宁波seo怎么做推广渠道怎么快速优化关键词
  • 集约化网站建设管理郑州网络营销公司哪个好
  • 设计素材网站排名seo搜索规则
  • 大连网站建设佳熙科技公司网络营销方式有几种
  • 怎么在自己的网站上做漂浮链接百度广告销售
  • 网站制作详细流程百度搜图
  • 西安网站制作 西安彩铃400电话西安百度关键词包年
  • 有专门做序列图的网站百度竞价点击价格公式
  • 网站开发进阶重庆网站制作系统
  • 网站模板一般用什么软件做哪家建设公司网站
  • 做的网站如何发布怎样建网站平台
  • 贵南网站建设百度一下网页
  • wordpress企业站教程网页设计用什么软件做
  • 淘宝客网站怎么建设seo优化排名技术百度教程
  • 在线做动漫图片视频在线观看网站黄山seo推广
  • 河北手机版建站系统价格百度手机
  • 网站qq显示未启用桔子seo查询
  • 商业网站建设费用搭建一个网站需要什么
  • 商超网站搜索推广开户
  • 搜索引擎和门户网站的区别google推广工具
  • 网络营销案例文章搜索引擎网站推广如何优化
  • 网站服务器空间郑州粒米seo外包
  • 一千个长尾关键词用一千个网站做网站百度收录
  • 金寨建设工程质量监督站网站百度没有排名的点击软件
  • 广州正规网站建设有哪些重庆网站优化软件
  • 少儿类网站怎么做2023年7 8月十大新闻
  • 网站业务员怎么给客户做方案网站百度百科
  • 河南省人民政府任命一批干部什么是sem和seo
  • 跨境电商网站如何做推广方案杭州关键词排名工具
  • 怎么用linux做网站服务器吗新闻稿发布