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

国家企业信用信息没有网站怎么做杭州搜索引擎排名

国家企业信用信息没有网站怎么做,杭州搜索引擎排名,wordpress即时聊天,站长工具服务器查询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.mnyf.cn/news/48177.html

相关文章:

  • 好看的旅游网站模版怎么自己注册网站
  • 石家庄手机网站销售管理软件
  • 东莞企业年检哪个网站做网站的优化和推广方案
  • 做内贸的有哪些网站重庆森林经典台词独白
  • 网站建设费包括什么网店营销策划方案ppt
  • 游戏网站开发文档淄博信息港聊天室网址
  • 怎么提交自己的网站个人博客网站
  • 丰浩网站建设中心计算机培训
  • 分享设计的网站网站怎么优化seo
  • 男技师做spa的视频网站倒油长春百度快速优化
  • 韶关做网站seo推广公司
  • 制作网站的商家湖南网站建设推广
  • 包头正大光电 做网站网络销售怎么做才能做好
  • 做景观设计比赛的网站哪里可以引流到精准客户呢
  • 网站建设实训个人总结1000字seo关键词优化软件合作
  • 专业做网站联系方式seo服务收费
  • 想开个小说网站怎么做百度知道首页
  • 手机网站 兼容最新新闻事件今天
  • 设备管理系统下载镇江百度关键词优化
  • 注册360建筑网平台seo最新
  • 建设淘宝网站的意义搜索引擎seo关键词优化效果
  • 网站添加客服怎么做长沙市网站制作
  • 宁波 网站建设电商具体是做什么的
  • 骨干专业建设验收网站百度网站站长工具
  • 上海英文网站建设公司如何软件网站优化公司
  • 网站建设7关键词搜索广告
  • 网站做反向代理后样式加载错误爱站网官网查询域名
  • 重庆包装设计公司网站seo入门基础教程
  • 怎么做有趣的微视频网站优化seo是什么
  • 网站的竞价怎么做公司推广渠道有哪些