739 每日温度 ( 单调栈 )

题目 : https://leetcode-cn.com/problems/daily-temperatures/

题意 : 找到数组每一个元素之后第一个大于它的元素的位置

思路 : 从后往前遍历数组, 进行压栈操作, 栈中保留元素在T中的索引, 栈始终呈下大上小的状态, 对于每个遍历到的元素如果小于栈顶则输出1, 如果大于栈顶则把栈顶元素弹出知道匹配到小于的元素

核心 : 维护一个单调递减栈

( 忘记存代码了, 嫖一份算了

class Solution {
public:
vector<int> dailyTemperatures(vector<int>& T) {
vector<int> ans(T.size());
stack<int> s;
for (int i = 0; i < T.size(); ++i) {
while (!s.empty() && T[i] > T[s.top()]) {
int temp = s.top();
ans[temp] = i - temp;
s.pop();
}
s.push(i);
}
return ans;
}
};

15 三数之和 双指针查找

题意 : 给一个数组找出数组中所有a+b+c = 0的元素组合, 注意避免重复

题目 : https://leetcode-cn.com/problems/3sum/

思路 : 先sort, 然后查找 : a元素从头开始遍历, b和c用两个指针前后双指针查找, 复杂度O(\(N^2\))

容易出错的点 :

  • 避免重复的过程中, 出现指针越界的现象的判定
  • 压入数组的时间
  • 当a+b+c==0后对两指针的操作时指针越界的判定

反正我交了5发, 问题都是靠特判解决的, 这种题还是要多列几种情况再动手

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
vector<vector<int> > threeSum(vector<int>& nums) {
vector< vector<int> > ans;
vector<int> tmp(3);
sort(nums.begin(), nums.end());
for (unsigned int i = 0; i < nums.size(); ++i)
{
if(i != 0)
while(nums[i]==nums[i-1] && i < nums.size()-2)++i;
if(nums[i] > 0 || i>=nums.size()-2) break;
int a = nums[i];
int l = i+1, r = nums.size() - 1;
while(l < r) {
if(a + nums[l] + nums[r] == 0) {
tmp[0] = a, tmp[1] = nums[l], tmp[2] = nums[r];
l++;r--;
while(nums[l]==nums[l-1] && l<r)l++;
while(nums[r]==nums[r+1] && l<r)r--;
}
ans.push_back(tmp);
else{
if(nums[l] + a < -nums[r])
l++;
else
r--;
}
} }
return ans;
} int main(){
ios::sync_with_stdio(false);
cin.tie(0);
int a[6] = {3, 0, -2, -1, 1, 2};
vector<int> num(a, a+6);
vector< vector<int> > s = threeSum(num);
for(unsigned int i = 0; i < s.size(); ++i) {
for(int j = 0; j < 3; ++j) {
cout << s[i][j] << " ";
}
cout << endl;
}
return 0;
}

[每日一题2020.06.13]leetcode #739 #15 单调栈 双指针查找的更多相关文章

  1. [每日一题2020.06.17] leetcode周赛T3 5438 制作m束花所需的最少天数 二分搜索

    题目链接 这题我开始一直在想如何在数组上dp操作搜索区间, 很蠢, 实际上用二分查找的方法可以很快的解决 首先我们通过一个函数判断第x天是否符合题意, 如果x天可以做出m束花, 那么大于m的天数必然可 ...

  2. [每日一题2020.06.14]leetcode #70 爬楼梯 斐波那契数列 记忆化搜索 递推通项公式

    题目链接 题意 : 求斐波那契数列第n项 很简单一道题, 写它是因为想水一篇博客 勾起了我的回忆 首先, 求斐波那契数列, 一定 不 要 用 递归 ! 依稀记得当年校赛, 我在第一题交了20发超时, ...

  3. [每日一题2020.06.16] leetcode双周赛T3 5423 找两个和为目标值且不重叠的子数组 DP, 前缀和

    题目链接 给你一个整数数组 arr 和一个整数值 target . 请你在 arr 中找 两个互不重叠的子数组 且它们的和都等于 target .可能会有多种方案,请你返回满足要求的两个子数组长度和的 ...

  4. [每日一题2020.06.09] leetcode #97 交错字符串 dp

    题目链接 利用动态规划的思想, 对于每种状态(i, j)来说都有(i-1, j) 和 (i,j-1) 需要注意的问题 : 初始化的问题,先把i=0和j=0的状态都初始化后才可以进行dp否则发生数组越界 ...

  5. [每日一题2020.06.11]Codeforces Round #644 (Div. 3) H

    A-E见 : 这里 题目 我觉得很有必要把H拿出来单独发( 其实是今天懒得写题了 ) problem H 一个从 1 到 $ 2^m - 1$ 的长度为m的连续二进制序列, 删去指定的n个数, 问剩余 ...

  6. [每日一题2020.06.10]Codeforces Round #644 (Div. 3) ABCDEFG

    花了5个多少小时总算把div3打通一次( 题目链接 problem A 题意 : 两个x*y的矩形不能重叠摆放, 要放进一个正方形正方形边长最小为多少 先求n = min(2x, 2y, x+y) 再 ...

  7. [每日一题2020.06.08]洛谷P1605 DFS

    今天cf又杯具的只写出2题, 虽然AB题20分钟左右就搞定了, 但是CD写了2个小时也没写出来 D题我用到了DFS, 虽然必不正确, 但是我至少发现了一个问题, 那就是我连DFS都忘了, 于是怒找DF ...

  8. [每日一题2020.06.15]P1226 【模板】快速幂取余运算

    我是题目 快速幂就是快速求 \(a^b\)的一种算法 快速幂 思想 : 比如我要求 \(6^9\) 首先将幂转化为二进制形式 : \[6^9 = 6^{1001} \tag{1} \] 可以得到 : ...

  9. [每日一题2020.06.12]P3375 【模板】KMP字符串匹配

    题目链接 关于kmp : https://www.cnblogs.com/roccoshi/p/13096988.html 关于kmp, 想了很久, 我觉得不应该放在这里写, 另开一贴记录一下. #i ...

随机推荐

  1. IDEA启动springboot项目找不到application.yml配置文件

    idea启动项目时读取不到application-pro.yml文件,但是配置文件都在resource目录下: 解决:target/classes 目录是IDEA的classpath目录,项目编译后配 ...

  2. HDU1160

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1160 题目大意:给出多个数据组(最多1000个),terminated by end of file, ...

  3. Pyqt5_QmainWindow

    QmainWindow Toolbar() QMenuBar() StatusBar() ******************************************************* ...

  4. 服务治理:Spring Cloud Eureka

    Spring Cloud Eureka主要负责完成微服务架构中服务治理功能. 服务治理是微服务架构中最为核心和基础模块,主要用来实现各个微服务实例的自动注册和发现. 服务注册 微服务实例启动后向注册中 ...

  5. [PHP学习教程 - 系统]002.模拟守护进程(Daemon)-程序永远在后台运行

    引言:如何模拟那些自动轮循的服务,像守护进程(Daemon)那样,可以一直执行,永不停歇呢! Come on! Do it! Do! Do! Do!.... 使用接口: int ignore_user ...

  6. [JavaWeb基础] 015.Struts2 表单验证框架

    在web开发的过程中,我们经常要用到一些填写表单的操作,我们一般都要在提交表单信息的时候对表单的内容进行验证,struts2给我们提供了简单的实现接口,让我们可以很容易的对表单进行验证.下面讲解下最传 ...

  7. for循环结构的使用

    /* for循环格式: for(①初始化条件; ②循环条件 :③迭代部分){ //④循环体 } 执行顺序:①-②-④-③---②-④-③-----直至循环条件不满足 退出当前循环 * */ publi ...

  8. 动态ip服务器 动态ip服务器的常用连接方式 收藏版

    动态ip服务器目前比较常用的是VPS也叫作虚拟机.目前比较小型的vps服务器与普通电脑没什么区别,最大的区别就是用户连接zhidao服务器内的ip是固定不变的.而服务器运行的ip是可以动态的. 实现动 ...

  9. Chisel3 - util - BitPat

    https://mp.weixin.qq.com/s/80Q8j-OSMtgh5a92pI-MZA   使用value和mask来描述一个比特模式,即:value = bits & mask. ...

  10. 第十届蓝桥杯JavaC组省赛真题

    试题 A: 求和 本题总分:5 分 [问题描述] 小明对数位中含有 2.0.1.9 的数字很感兴趣,在 1 到 40 中这样的数包 括 1.2.9.10 至 32.39 和 40,共 28 个,他们的 ...