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

网站建设怎么入账站长统计幸福宝下载

网站建设怎么入账,站长统计幸福宝下载,动态网站,番禺免费核酸检测提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 今日学习目标一、算法题1.下一个更大元素 II2.接雨水3.柱状图中最大的矩形 今日心得学习及参考书籍 今日学习目标 下一个更大元素 II(503) …

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

  • 今日学习目标
  • 一、算法题
    • 1.下一个更大元素 II
    • 2.接雨水
    • 3.柱状图中最大的矩形
  • 今日心得
  • 学习及参考书籍


今日学习目标

下一个更大元素 II(503)
接雨水(42)
柱状图中最大的矩形(84)

一、算法题

1.下一个更大元素 II

题目:
给定一个循环数组 nums ( nums[nums.length - 1] 的下一个元素是 nums[0] ),返回 nums 中每个元素的 下一个更大元素 。

数字 x 的 下一个更大的元素 是按数组遍历顺序,这个数字之后的第一个比它更大的数,这意味着你应该循环地搜索它的下一个更大的数。如果不存在,则输出 -1 。

示例 1:

输入: nums = [1,2,1]
输出: [2,-1,2]
解释: 第一个 1 的下一个更大的数是 2;
数字 2 找不到下一个更大的数;
第二个 1 的下一个最大的数需要循环搜索,结果也是 2。

代码:

class Solution {
public:vector<int> nextGreaterElements(vector<int>& nums) {vector<int> result(nums.size(), -1);if (nums.size() == 0) return result;stack<int> st;st.push(0);for (int i = 1; i < nums.size() * 2; i++) { // 模拟遍历两边nums,注意一下都是用i % nums.size()来操作if (nums[i % nums.size()] < nums[st.top()]) st.push(i % nums.size());else if (nums[i % nums.size()] == nums[st.top()]) st.push(i % nums.size()); else {while (!st.empty() && nums[i % nums.size()] > nums[st.top()]) {result[st.top()] = nums[i % nums.size()];st.pop();}st.push(i % nums.size());}}return result;}
};

2.接雨水

题目:
给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。

示例 1:
在这里插入图片描述

输入:height = [0,1,0,2,1,0,1,3,2,1,2,1]
输出:6
解释:上面是由数组 [0,1,0,2,1,0,1,3,2,1,2,1] 表示的高度图,在这种情况下,可以接 6 个单位的雨水(蓝色部分表示雨水)。

代码:

class Solution {
public:int trap(vector<int>& height) {if (height.size() <= 2) return 0; // 可以不加stack<int> st; // 存着下标,计算的时候用下标对应的柱子高度st.push(0);int sum = 0;for (int i = 1; i < height.size(); i++) {if (height[i] < height[st.top()]) {     // 情况一st.push(i);} if (height[i] == height[st.top()]) {  // 情况二st.pop(); // 其实这一句可以不加,效果是一样的,但处理相同的情况的思路却变了。st.push(i);} else {                                // 情况三while (!st.empty() && height[i] > height[st.top()]) { // 注意这里是whileint mid = st.top();st.pop();if (!st.empty()) {int h = min(height[st.top()], height[i]) - height[mid];int w = i - st.top() - 1; // 注意减一,只求中间宽度sum += h * w;}}st.push(i);}}return sum;}
};

3.柱状图中最大的矩形

题目:
给定 n 个非负整数,用来表示柱状图中各个柱子的高度。每个柱子彼此相邻,且宽度为 1 。

求在该柱状图中,能够勾勒出来的矩形的最大面积。

示例 1:
在这里插入图片描述

输入:heights = [2,1,5,6,2,3]
输出:10
解释:最大的矩形为图中红色区域,面积为 10

代码:

class Solution {
public:int largestRectangleArea(vector<int>& heights) {int result = 0;stack<int> st;heights.insert(heights.begin(), 0); // 数组头部加入元素0heights.push_back(0); // 数组尾部加入元素0st.push(0);// 第一个元素已经入栈,从下标1开始for (int i = 1; i < heights.size(); i++) {if (heights[i] > heights[st.top()]) { // 情况一st.push(i);} else if (heights[i] == heights[st.top()]) { // 情况二st.pop(); // 这个可以加,可以不加,效果一样,思路不同st.push(i);} else { // 情况三while (!st.empty() && heights[i] < heights[st.top()]) { // 注意是whileint mid = st.top();st.pop();if (!st.empty()) {int left = st.top();int right = i;int w = right - left - 1;int h = heights[mid];result = max(result, w * h);}}st.push(i);}}return result;}
};

今日心得

比想象中的难。

学习及参考书籍

代码随想录

http://www.dtcms.com/wzjs/73910.html

相关文章:

  • 北京网站建设是什么意思电商广告网络推广
  • 北京市朝阳区社会建设工作办公网站西安百度竞价托管
  • 中国空间站简笔画惠州网络推广平台
  • 网站主服务器地址谷歌首页
  • 网站后台建设东莞网站公司
  • 网页设计代码及图片银徽seo
  • 怎样在微信公众号里做微网站百度店铺
  • 网站建设 职责外贸网站制作推广
  • 快速知彼网络网站建设新网站seo外包
  • dede 网站改宽屏代码软文文案案例
  • 免费看今天开始做女神的网站百度快照
  • 豆芽网站建设广州线上教学
  • 杭州市钱江新城投资集团有限公司征集网站建设合作单位的公告广告推广方式有哪几种
  • 做融资的网站有哪些推广普通话的意义50字
  • 建设通相似的网站百度手机浏览器
  • 有个网站发任务 用手机可以做武汉seo工厂
  • 1m带宽做网站快不网站优化及推广
  • 电脑建立网站平台免费推广app平台有哪些
  • 给装修公司做推广的网站seo研究中心vip课程
  • 个人网站可以做资讯吗?职业培训机构
  • 绥芬河建设工程网站如何去推广自己的产品
  • 长沙网站建设制作百度手机助手下载安装
  • 做哪个视频网站赚钱seo包年优化平台
  • 上海网站建设费用多少钱seo关键词排名工具
  • 做网站代理网络营销运营
  • 凡科一个注册做2个网站seo基础知识
  • 莆田市商城网站建设百度推广培训班
  • 自己做网站可以上传软件培训心得体会怎么写
  • 微网站自己可以做么网络营销中心
  • 青岛正规网站建设哪家好semir森马