回文子串 每日温度 接雨水

647. 回文子串

力扣题目链接

如果s【i】和s【j】相同

dp【i+1】【j-1】也是回文串的话 (等于true)

那么dp【i】【j】也是回文串 =true

定义一个bool二维数组

遍历顺序是从下到上 从左到右

因为dp【i】【j】是通过dp【i+1】【j-1】推出来的

i从最后一个开始 j从i开始 因为【i,j】 

j保持大于等于i

class Solution {
public:int countSubstrings(string s) {vector<vector<bool>> dp(s.size(), vector<bool>(s.size(), false));int result = 0;for (int i = s.size() - 1; i >= 0; i--) {  // 注意遍历顺序for (int j = i; j < s.size(); j++) {if (s[i] == s[j]) {if (j - i <= 1) { // 情况一 和 情况二result++;dp[i][j] = true;} else if (dp[i + 1][j - 1]) { // 情况三result++;dp[i][j] = true;}}}}return result;}
};

739. 每日温度

力扣题目链接

找到这个元素右边第一个比他大的元素

单调栈:构造出一个单调底层栈

先把第一个元素的下标放进栈

然后for循环从第二个元素开始

如果这个数小于等于栈顶元素 就把这个数的下表放进栈

如果这个数大于栈顶元素 

就说明这个元素是第一个比栈顶元素大的数

用result记录一下 把栈顶元素pop掉 while继续与下一个栈顶元素比较

最后把这个数放入栈

class Solution {
public:vector<int> dailyTemperatures(vector<int>& T) {// 递增栈stack<int> st;vector<int> result(T.size(), 0);st.push(0);for (int i = 1; i < T.size(); i++) {if (T[i] < T[st.top()]) {                       // 情况一st.push(i);} else if (T[i] == T[st.top()]) {               // 情况二st.push(i);} else {while (!st.empty() && T[i] > T[st.top()]) { // 情况三result[st.top()] = i - st.top();st.pop();}st.push(i);}}return result;}
};

精简版

class Solution {
public:vector<int> dailyTemperatures(vector<int>& T) {stack<int> st; // 递增栈vector<int> result(T.size(), 0);for (int i = 0; i < T.size(); i++) {while (!st.empty() && T[i] > T[st.top()]) { // 注意栈不能为空result[st.top()] = i - st.top();st.pop();}st.push(i);}return result;}
};

42. 接雨水

力扣题目链接

单调栈

先把第一数的下标存进去

for循环从第二个数开始

如果小于栈顶元素 就push进栈

如果等于栈顶元素 把之前的数pop出去 新的数push进来

如果大于栈顶元素 说明找到凹槽了 可以接雨水了

while循环可能会形成并计算计算多个凹槽

首先记录一下槽的底部 也就是栈顶

然后把栈顶pop出去 新的栈顶就是槽的左边 现在的i是槽的右边

因为要接雨水 要在左边和右边选一个矮的高度再减去槽底的高度 就是雨水的高

槽的右边减去槽的左边再减1就是槽的宽度

宽乘高就是雨水的体积 再进行累加即可

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;}
};

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/776813.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【漏洞复现】用友U8Cloud nc.bs.sm.login2.RegisterServlet SQL注入漏洞

0x01 产品简介 用友U8 Cloud是用友推出的新一代云ERP,主要聚焦成长型、创新型企业,提供企业级云ERP整体解决方案 0x02 漏洞概述 用友U8Cloud nc.bs.sm.login2.RegisterServlet接口处存在SQL注入漏洞,未授权的攻击者可通过此漏洞获取数据库权限,从而盗取用户数据,造成用…

OpenGL 实现“人像背景虚化“效果

手机上的人像模式,也被人们称作“背景虚化”或 ”双摄虚化“ 模式,也称为 Bokeh 模式,能够在保持画面中指定的人或物体清晰的同时,将其他的背景模糊掉。突出画面的主体部分,主观上美感更强烈。 人像模式的一般实现原理是,利用双摄系统获取景深信息,并通过深度传感器和图…

WorkPlus智能AI助理:定制化部署,拓展企业协作新境界

近年来&#xff0c;随着人工智能技术不断发展&#xff0c;智能助理在企业管理中发挥着日益重要的作用。其中&#xff0c;WorkPlus智能AI助理作为一款支持私有化部署的新一代智能助理软件&#xff0c;为企业内部协作场景带来了全新的可能性。通过结合企业自身的行业知识和应用场…

英伟达推出“地表最强AI芯片”

B站&#xff1a;啥都会一点的研究生公众号&#xff1a;啥都会一点的研究生 近期AI相关资讯&#xff0c;一起看看吧~ Neuralink首位脑芯片患者用意念下棋 埃隆-马斯克&#xff08;Elon Musk&#xff09;的脑芯片初创公司 Neuralink 展示了其首位脑芯片患者仅用意念下棋的情景…

VMware vSAN OSA存储策略 - 基于虚拟机的分布式对象存储

简介 博客&#xff1a;https://songxwn.com/ 存储策略 (Storage Policy) 是管理员定义的一组规则&#xff0c;这组规则定义了数据对象在 vSAN 存储上是如何保存的&#xff0c;存储策略定义了数据存储的可靠性、访问性能等特性。vSAN 提供了基于存储策略的存储管理 SPBM (Stor…

共享旅游卡2024年未来发展趋势

共享旅游卡2024年未来发展趋势分析 共享旅游卡&#xff0c;作为一种创新的旅游服务方式&#xff0c;正在逐步改变传统的旅游消费模式。它将各类旅游资源进行有机整合&#xff0c;为游客提供了更加便捷、灵活的旅游体验。 随着共享经济的日益深入&#xff0c;共享旅游卡在2024…

ssh连接

Telne服务使用很方便&#xff0c;但是它是通过明文传递信息&#xff0c;所有安全性就不高&#xff0c;目前普遍使用的SSH(SecureShell)来进行远程管理 。SSH协议有SSH1和SSH2两个版本&#xff0c;他们使用管理不同的协议和实现&#xff0c;二者互不兼容。SSH2比SSH1在安全性&am…

基于java实现的高校二手交易平台

开发语言&#xff1a;Java 框架&#xff1a;ssm 技术&#xff1a;JSP JDK版本&#xff1a;JDK1.8 服务器&#xff1a;tomcat7 数据库&#xff1a;mysql 5.7&#xff08;一定要5.7版本&#xff09; 数据库工具&#xff1a;Navicat11 开发软件&#xff1a;eclipse/myeclip…

无服务数据库是未来的趋势吗?

无服务数据库是未来的趋势吗&#xff1f; 无服务器数据库是未来的趋势吗&#xff1f;无服务器数据库与传统云数据库有何不同&#xff1f; Amazon Aurora Serverless&#xff08;如下图所示&#xff09;是 Amazon Aurora 的一种配置方式&#xff0c;可以按需自动扩展。 Aurora…

自学算法:03 一维动态规划

有些递归在展开计算时&#xff0c;总是重复调用同一个子问题的解&#xff0c;这种重复调用的递归变成动态规划会很有收益&#xff0c;而如果每次展开都是不同的解&#xff0c;或者重复调用的现象很少&#xff0c;那么没有改动态规划的必要。 所以任何动态规划问题都一定对应着一…

针对ETC系统的OBE-SAM模块设计方案

ETC系统组成及工作原理 ETC系统由前端系统和后台数据库系统组成&#xff0c;总体的架构如下图所示&#xff1a; 前端系统包含安装在汽车挡风玻璃上的车载单元&#xff08;On Board Unit&#xff0c;简称OBU&#xff09;、路侧单元&#xff08;Roadside Unit&#xff0c;简称RS…

深入解析Spring MVC: 原理、流程【面试版】

什么是SpringMV? 1.是一个基于MVC的web框架&#xff1b; 2.是spring的一个模块&#xff0c;是spring的子容器&#xff0c;子容器可以拿父容器的东西&#xff0c;但是反过来不可&#xff1b; 2.SpringMVC的前端控制器是DispatcherServlet&#xff0c;用于分发请求。使开发变…

python--切片

1.切片&#xff1a; 切片是编程语言为有序序列&#xff08;sequence&#xff09;准备的&#xff0c;用来切割或者截取某个片段 一个完整的切片是包含三个参数和两个冒号" : " ,用于分隔三个参数(start_index、end_index、step)。当只有一个“:”时&#xff0c;默认第…

Java语法之参数设置

PathVariable 路径参数 须在请求路径加上 Param 参数说明&#xff1a;便于配置很多条件 RequestBody 前端传json 通过该注解可以转成Java对象&#xff08;实体类&#xff09; RequestParam 获取查询参数&#xff1a;通过指定参数名称&#xff0c;RequestParam注解可以从请求…

深度学习(三)vscode加jupyter notebook插件使用

0.前言 哎呀&#xff0c;我本次的实验是在新电脑上使用的&#xff0c;之前的笔记本上的环境什么的我都是很久以前弄好了的&#xff0c;结果到了新电脑上我直接忘了是该怎么配的了&#xff0c;不过万幸&#xff0c;花了点时间&#xff0c;查查补补&#xff0c;现在总算是可以了。…

elasticsearch 6.8.x 索引别名、动态索引扩展、滚动索引

文章目录 引言索引别名&#xff08;alias&#xff09;创建索引别名查询索引别名删除索引别名重命名索引别名 动态索引&#xff08;index template&#xff0c;动态匹配生成索引&#xff09;新建索引模板新建索引并插入数据索引sys-log-202402索引sys-log-202403索引sys-log-202…

在linux安装python

在Linux系统上使用./configure命令时&#xff0c;--prefixxxx和--enable-optimizations是两个常用选项&#xff0c;它们的作用如下&#xff1a; –prefixxxx&#xff1a; 这个选项指定了安装目录的路径。通常情况下&#xff0c;Python会被安装到/usr/local目录下&#xff0c;但…

笔记 socket长连接工具类

socket长连接工具类&#xff1a; package com.github.jasonhancn.tvcursor;import android.os.Handler; import android.os.Looper; import android.util.Log; import android.widget.Toast;import java.io.BufferedReader; import java.io.IOException; import java.io.Input…

Llama模型下载

最近llama模型下载的方式又又变了&#xff0c;所以今天简单更新一篇文章&#xff0c;关于下载的&#xff0c;首先上官网&#xff0c;不管在哪里下载你都要去官网登记一下信息&#xff1a;https://llama.meta.com/llama2 然后会出现下面的信息登记网页&#xff1a; 我这里因为待…