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. 09-Python之路---函数进阶

    Python之路---函数进阶️ 程序员三大美德: 懒惰 因为一直致力于减少工作的总工作量. 缺乏耐性 因为一旦让你去做本该计算机完成的事,你将会怒不可遏. 傲慢 因为被荣誉感冲晕头的你会把程序写得让 ...

  2. poj2594最小路径覆盖+floyd

    Treasure Exploration Time Limit: 6000MS   Memory Limit: 65536K Total Submissions: 8909   Accepted: 3 ...

  3. springmvc拦截器和概念,配置!!!

    用于拦截请求,过滤后再拦截 实现HandlerInterceptor接口 配置拦截器 package cn.zys.lanjieqi; import javax.servlet.http.HttpSe ...

  4. Verilog代码和FPGA硬件的映射关系(一)

    代码和硬件之间的映射关系是一个很奇妙的过程,也展现出人类的智慧.单片机内部的硬件结构都是固定的,无法改变,我们通过代码操作着寄存器的读写,来执行各种复杂的任务.FPGA的硬件结构并不像单片机一样是固定 ...

  5. Unity调用Android Studio中的Java方法

    1. 新建Unity项目: 2. Android Studio中新建EmptyActivity: 3. 新建安卓项目时记住最小版本号: 4. 将左侧项目文件浏览面板切换到Project项下,在本项根节 ...

  6. CF1353E K-periodic Garland(贪心/dp)

    Question 有n盏灯,0代表暗,1代表亮,相邻两个1之间为周期k,求出最少的改变次数 Solution First 贪心方法 详见博客https://blog.csdn.net/cheng__y ...

  7. [Android应用开发] 03.网络编程

    *:first-child { margin-top: 0 !important; } body > *:last-child { margin-bottom: 0 !important; } ...

  8. [Objective-C] 012_数据持久化_XML属性列表,NSUserDefaults

    在日常开发中经常要对NSString.NSDictionary.NSArray.NSData.NSNumber这些基本类的数据进行持久化,我们可以用XML属性列表持久化到.plist 文件中,也可以用 ...

  9. 读Pyqt4教程,带你入门Pyqt4 _013

    你是否曾经看着应用程序并思考特定的GUI项是如何产生的?大概每位程序员都这样过.然后你能看到你喜欢的GUI库提供的一系列窗口组件,但是你无法找到它.工具包通常仅仅提供最常用的窗口组件,比如按钮.文本组 ...

  10. 个人工具,编辑器visual studio code

    个人收集的使用方法:简化版 主要基于基础web前端开发,visual studio code教程——基础使用.扩展插件安装使用 下载地址: https://visualstudio.microsoft ...