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

408算法题leetcode--第11天

3. 无重复字符的最长子串

  • 3. 无重复字符的最长子串
  • 思路:滑动窗口
  • 时间:O(n);空间:O(字符种类数)
class Solution {
public:int lengthOfLongestSubstring(string s) {// 滑动窗口:如果没有出现相同的字符,那么右指针一直向右int ret = 0, size = s.size();unordered_map<char, int>mp;for(int i = 0, j = 0; j < size; j++){if(mp.find(s[j]) != mp.end()){while(mp.find(s[j]) != mp.end()){mp.erase(s[i]);i++;}}mp[s[j]] = 1;ret = max(ret, j - i + 1);}return ret;}
};

48. 旋转图像

  • 48. 旋转图像
  • 思路:观察法
  • 时间:O( n 2 n^2 n2);空间:O(1)
class Solution {
public:void rotate(vector<vector<int>>& matrix) {// 观察法:先行对称上下互换,再转置矩阵int n = matrix.size();for(int i = 0; i < n / 2; i++){for(int j = 0; j < n; j++){swap(matrix[i][j], matrix[n - i - 1][j]);}}for(int i = 0; i < n; i++){for(int j = 0; j < i; j++){swap(matrix[i][j], matrix[j][i]);}}}
};

54. 螺旋矩阵

  • 54. 螺旋矩阵
  • 思路:模拟
  • 时间:O( n 2 n^2 n2);空间:O(1)
class Solution {
public:vector<int> spiralOrder(vector<vector<int>>& matrix) {vector<int>ret;int left = 0, right = matrix[0].size() - 1, top = 0, bottom = matrix.size() - 1;while(left <= right && top <= bottom){for(int i = left; i <= right; i++){ret.push_back(matrix[top][i]);}if(++top > bottom){break;}for(int i = top; i <= bottom; i++){ret.push_back(matrix[i][right]);}if(--right < left){break;}for(int i = right; i >= left; i--){ret.push_back(matrix[bottom][i]);}if(--bottom < top){break;}for(int i = bottom; i >= top; i--){ret.push_back(matrix[i][left]);}if(++left > right){break;}}return ret;}
};

20. 有效的括号

  • 20. 有效的括号
  • 思路:左括号入栈,遇到对应的右括号出栈
  • 时间:O(n);空间:O(n)
class Solution {
public:bool isValid(string s) {stack<int>stk;for(auto c : s){if(c == '(' || c == '{' || c == '['){stk.push(c);} else if(c == ')' && stk.size() && stk.top() == '('){stk.pop();} else if(c == ']' && stk.size() && stk.top() == '['){stk.pop();}else if(c == '}' && stk.size() && stk.top() == '{'){stk.pop();} else {return false;}}if(stk.size()){return false;}return true;}
};

150. 逆波兰表达式求值

  • 150. 逆波兰表达式求值
  • 思路:栈
  • 时间:时间:O(n);空间:O(n)
class Solution {
public:int evalRPN(vector<string>& tokens) {// 遇到数字就入栈// 遇到符号就弹出两个数计算,然后将数重新入栈stack<long long>stk;for(auto c : tokens){if(c == "+" || c == "*" || c == "-" || c == "/"){auto t1 = stk.top();stk.pop();auto t2 = stk.top();stk.pop();long long temp = 0;if(c == "+") temp = t1 + t2;else if(c == "-") temp = t2 - t1;else if(c == "*") temp = t1 * t2;else temp = t2 / t1;stk.push(temp);} else {stk.push(stoll(c));}}return stk.top();}
};

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • nginx架构篇(三)
  • PHP环境搭建
  • 数据结构--第七章查找
  • 机器翻译之Bahdanau注意力机制在Seq2Seq中的应用
  • Linux操作系统面试题记录
  • 国内可以使用的ChatGPT服务【9月持续更新】
  • 机器之心 | 阿里云Qwen2.5发布!再登开源大模型王座,Qwen-Max性能逼近GPT-4o
  • 【研发日记】嵌入式处理器技能解锁(六)——ARM的Cortex-M4内核
  • 新书速览|NestJS全栈开发解析:快速上手与实践
  • 数据结构之二叉树查询
  • JetLinks物联网学习(前后端项目启动)
  • HarmonyOS开发者基础认证考试试题
  • 生信初学者教程(七):数据库
  • 【pytorch】RuntimeError: cuDNN error: CUDNN_STATUS_EXECUTION_FAILED 报错
  • 【Unity踩坑】UI Image的fillAmount不起作用
  • [ JavaScript ] 数据结构与算法 —— 链表
  • [ 一起学React系列 -- 8 ] React中的文件上传
  • 《深入 React 技术栈》
  • 【MySQL经典案例分析】 Waiting for table metadata lock
  • 【许晓笛】 EOS 智能合约案例解析(3)
  • AWS实战 - 利用IAM对S3做访问控制
  • JS专题之继承
  • Laravel深入学习6 - 应用体系结构:解耦事件处理器
  • MySQL Access denied for user 'root'@'localhost' 解决方法
  • Python 基础起步 (十) 什么叫函数?
  • Python学习笔记 字符串拼接
  • RedisSerializer之JdkSerializationRedisSerializer分析
  • Shadow DOM 内部构造及如何构建独立组件
  • SQLServer插入数据
  • vue-cli在webpack的配置文件探究
  • 阿里云应用高可用服务公测发布
  • 安装python包到指定虚拟环境
  • 发布国内首个无服务器容器服务,运维效率从未如此高效
  • 近期前端发展计划
  • 理解IaaS, PaaS, SaaS等云模型 (Cloud Models)
  • 前端每日实战 2018 年 7 月份项目汇总(共 29 个项目)
  • 如何在 Tornado 中实现 Middleware
  • 小而合理的前端理论:rscss和rsjs
  • d²y/dx²; 偏导数问题 请问f1 f2是什么意思
  • 《天龙八部3D》Unity技术方案揭秘
  • Java总结 - String - 这篇请使劲喷我
  • ​ 全球云科技基础设施:亚马逊云科技的海外服务器网络如何演进
  • ​比特币大跌的 2 个原因
  • ​软考-高级-信息系统项目管理师教程 第四版【第23章-组织通用管理-思维导图】​
  • # Spring Cloud Alibaba Nacos_配置中心与服务发现(四)
  • #include到底该写在哪
  • #nginx配置案例
  • ( 用例图)定义了系统的功能需求,它是从系统的外部看系统功能,并不描述系统内部对功能的具体实现
  • (Mirage系列之二)VMware Horizon Mirage的经典用户用例及真实案例分析
  • (react踩过的坑)Antd Select(设置了labelInValue)在FormItem中initialValue的问题
  • (二) 初入MySQL 【数据库管理】
  • (算法二)滑动窗口
  • (推荐)叮当——中文语音对话机器人
  • *p++,*(p++),*++p,(*p)++区别?
  • .net core Redis 使用有序集合实现延迟队列