[每日一题2020.06.13]leetcode #739 #15 单调栈 双指针查找
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 单调栈 双指针查找的更多相关文章
- [每日一题2020.06.17] leetcode周赛T3 5438 制作m束花所需的最少天数 二分搜索
题目链接 这题我开始一直在想如何在数组上dp操作搜索区间, 很蠢, 实际上用二分查找的方法可以很快的解决 首先我们通过一个函数判断第x天是否符合题意, 如果x天可以做出m束花, 那么大于m的天数必然可 ...
- [每日一题2020.06.14]leetcode #70 爬楼梯 斐波那契数列 记忆化搜索 递推通项公式
题目链接 题意 : 求斐波那契数列第n项 很简单一道题, 写它是因为想水一篇博客 勾起了我的回忆 首先, 求斐波那契数列, 一定 不 要 用 递归 ! 依稀记得当年校赛, 我在第一题交了20发超时, ...
- [每日一题2020.06.16] leetcode双周赛T3 5423 找两个和为目标值且不重叠的子数组 DP, 前缀和
题目链接 给你一个整数数组 arr 和一个整数值 target . 请你在 arr 中找 两个互不重叠的子数组 且它们的和都等于 target .可能会有多种方案,请你返回满足要求的两个子数组长度和的 ...
- [每日一题2020.06.09] leetcode #97 交错字符串 dp
题目链接 利用动态规划的思想, 对于每种状态(i, j)来说都有(i-1, j) 和 (i,j-1) 需要注意的问题 : 初始化的问题,先把i=0和j=0的状态都初始化后才可以进行dp否则发生数组越界 ...
- [每日一题2020.06.11]Codeforces Round #644 (Div. 3) H
A-E见 : 这里 题目 我觉得很有必要把H拿出来单独发( 其实是今天懒得写题了 ) problem H 一个从 1 到 $ 2^m - 1$ 的长度为m的连续二进制序列, 删去指定的n个数, 问剩余 ...
- [每日一题2020.06.10]Codeforces Round #644 (Div. 3) ABCDEFG
花了5个多少小时总算把div3打通一次( 题目链接 problem A 题意 : 两个x*y的矩形不能重叠摆放, 要放进一个正方形正方形边长最小为多少 先求n = min(2x, 2y, x+y) 再 ...
- [每日一题2020.06.08]洛谷P1605 DFS
今天cf又杯具的只写出2题, 虽然AB题20分钟左右就搞定了, 但是CD写了2个小时也没写出来 D题我用到了DFS, 虽然必不正确, 但是我至少发现了一个问题, 那就是我连DFS都忘了, 于是怒找DF ...
- [每日一题2020.06.15]P1226 【模板】快速幂取余运算
我是题目 快速幂就是快速求 \(a^b\)的一种算法 快速幂 思想 : 比如我要求 \(6^9\) 首先将幂转化为二进制形式 : \[6^9 = 6^{1001} \tag{1} \] 可以得到 : ...
- [每日一题2020.06.12]P3375 【模板】KMP字符串匹配
题目链接 关于kmp : https://www.cnblogs.com/roccoshi/p/13096988.html 关于kmp, 想了很久, 我觉得不应该放在这里写, 另开一贴记录一下. #i ...
随机推荐
- 王艳 201771010127《面向对象程序设计(java)》第九周学习总结
实验九 异常.断言与日志 实验时间 2018-10-25 1.实验目的与要求 (1) 掌握java异常处理技术: (2) 了解断言的用法: (3) 了解日志的用途: (4) 掌握程序基础调试技巧: 一 ...
- web项目——javax.servlet.ServletException: Circular view path [registerForm]
报错: 控制台输出: 三月 21, 2019 10:12:32 上午 org.springframework.web.servlet.PageNotFound noHandlerFound 警告: N ...
- vi和软件安装
一 vi编辑器简介 vim 全屏幕纯文本编辑器 二 vim使用 1 vi 模式 vi 文件名 命令模式 输入模式 末行模式 命令---->输入 a:追加 i:插入 o:打开 ...
- docker启动各种容器命令大全
安装步骤梳理 搜索镜像 拉取镜像 查看镜像 启动镜像 停止容器 移除容器 安装tomcat docker hub好查找tomcat镜像 docker search tomcat 从docker hu ...
- 转载 配置vue项目
Vue作为前端三大框架之一截至到目前在github上以收获44,873颗星,足以说明其以悄然成为主流.16年10月Vue发布了2.x版本,经过了一段时间的摸索和看官方的教程和api,才了解到2.0版本 ...
- Android_适配器(adapter)之BaseAdapter
BaseAdapter是应用最多的一种适配了.它是一个抽象类,需要重写方法完成自定义适配器的功能,这就比较自由灵活,能实现各种想要的效果. 之前讲到的SimpleAdapter和ArrayAdapte ...
- Thunar左侧边栏不完全显示PLACES的解决
场景 我的笔记本装上系统时用的英文,安装中文之后,发现文件管理器的默认的几个文件夹 Desktop.Music.Videos.Downloads等都变成了中文,由于是新安装的系统,就重新生成 loca ...
- MvvmLight + Microsoft.Extensions.DependencyInjection + WpfApp(.NetCore3.1)
git clone MvvmLight失败,破网络, 就没有直接修改源码的方式来使用了 Nuget安装MvvmLightLibsStd10 使用GalaSoft.MvvmLight.Command命名 ...
- 树莓派4B获取IP地址的几种简易方法
首先声明一下,使用的是Paspbian系统,其实其他系统和本文说的获取IP地址关系也不大. 1.当你有路由器,有PC客户端的情况,你把你的树莓派用网线将其连接起来.你可以借助这个软件,advanced ...
- R 语言
ps 帮人学习R语言代码: 定义变量 alldata<-c(32.56,1.4072,28.94,0.231,11.005,2.48713,40.33,1.5334,34.79,0.288,18 ...