Leetcode刷题笔记--Hot31-40

1--颜色分类(75)

主要思路:

        快排

#include <iostream>
#include <vector>class Solution {
public:void sortColors(std::vector<int>& nums) {quicksort(nums, 0, nums.size()-1);}void quicksort(std::vector<int>& nums, int left, int right){if(left >= right) return;int pivot = nums[left];int l = left, r = right;while(l < r){while(l < r && nums[r] >= pivot) r--;nums[l] = nums[r];while(l < r && nums[l] <= pivot) l++;nums[r] = nums[l];}nums[l] = pivot;quicksort(nums, left, l-1);quicksort(nums, l+1, right);}
};int main(int argc, char *argv[]){// nums = [2,0,2,1,1,0]std::vector<int> test = {2, 0, 2, 1, 1, 0};Solution S1;S1.sortColors(test);for(auto item : test){std::cout << item << " ";}return 0;
}

主要思路: 

#include <iostream>
#include <vector>class Solution {
public:void sortColors(std::vector<int>& nums) {int n = nums.size();int p0 = 0, p2 = n - 1;for (int i = 0; i <= p2; ++i) {while (i <= p2 && nums[i] == 2) {std::swap(nums[i], nums[p2]);--p2;}if (nums[i] == 0) {std::swap(nums[i], nums[p0]);++p0;}}}
};int main(int argc, char *argv[]){// nums = [2,0,2,1,1,0]std::vector<int> test = {2, 0, 2, 1, 1, 0};Solution S1;S1.sortColors(test);for(auto item : test){std::cout << item << " ";}return 0;
}

​​​​​​​​​​​​​​​​​​​​​2--最小覆盖子串(76)

主要思路:

        参考思路:视频讲解​​​​​​​

#include <iostream>
#include <string>
#include <unordered_map>class Solution {
public:std::unordered_map<char, int> t_map;std::unordered_map<char, int> min_map;
public:std::string minWindow(std::string s, std::string t) {if(s.length() < t.length()) return "";for(int i = 0; i < t.length(); i++){if(t_map.find(t[i]) == t_map.end()) t_map[t[i]] = 1;else t_map[t[i]] += 1; }int l = 0, r = 0;int min_l = 0, min_len = s.length() + 1;while(r < s.length()){if(min_map.find(s[r]) == min_map.end()) min_map[s[r]] = 1;else min_map[s[r]] += 1;while(check()){if(r - l + 1 < min_len){min_l = l;min_len = r - l + 1;}min_map[s[l]]--;l++; // 左指针右移}r++;}return min_len == s.length() + 1 ? "" : s.substr(min_l, min_len);}bool check(){if(t_map.size() > min_map.size()) return false;for(auto kv : t_map){char key = kv.first;int value = kv.second;if(min_map.find(key) == min_map.end() || min_map[key] < t_map[key]){return false;}}return true;}
};int main(int argc, char *argv[]){// s = "ADOBECODEBANC", t = "ABC"std::string s = "ADOBECODEBANC";std::string t = "ABC";Solution S1;std::string res = S1.minWindow(s, t);std::cout << res << std::endl;return 0;
}

3--子集(78)

主要思路:

         整体思路有点类似全排列,对于数组中的元素,加入(递归)或不加入(回溯)到记录数组中;

        不同于全排列的是,本题 dfs 的时候不需要重头遍历所有元素,整个加入过程是前向的;

#include <iostream>
#include <vector>class Solution {
public:std::vector<std::vector<int>> subsets(std::vector<int>& nums) {std::vector<int> tmp;res.push_back(tmp); // []dfs(nums, 0, tmp);return res;}void dfs(std::vector<int>& nums, int idx, std::vector<int>& tmp){if(idx == nums.size()) {return;}tmp.push_back(nums[idx]); // 加入当前的值res.push_back(tmp);dfs(nums, idx+1, tmp);tmp.pop_back(); // 回溯剔出当前加入的值dfs(nums, idx+1, tmp);return;   }
private:std::vector<std::vector<int>> res;
};int main(int arc, char *argv[]){std::vector<int> test = {1, 2, 3};Solution S1;std::vector<std::vector<int>> res = S1.subsets(test);for(auto v : res){std::cout << "[";for(int item : v){std::cout << item << " ";}std::cout << "]" << std::endl;}return 0;
}

4--单词搜索(79)

主要思路:

        递归+回溯,遍历从board[i][j]出发,能否匹配给定的字符串;

        需要使用一个记录数组来标记当前 board[i][j] 是否被访问,回溯时还原访问状态;

#include <iostream>
#include <vector>
#include <string>class Solution {
public:bool exist(std::vector<std::vector<char>>& board, std::string word) {int m = board.size(), n = board[0].size();std::vector<std::vector<bool>> vis(m, std::vector<bool>(n, false));bool res;for(int i = 0; i < m; i++){for(int j = 0; j < n; j++){res = dfs(i, j, 0, board, word, vis);if(res) return true;}}return false;}bool dfs(int i, int j, int cur, std::vector<std::vector<char>>& board, std::string word, std::vector<std::vector<bool>>& vis){if(cur == word.length()) return true;if(i >= board.size() || j >= board[0].size() || i < 0 || j < 0 || board[i][j] != word[cur] || vis[i][j] == true){return false;}vis[i][j] = true;bool res = dfs(i+1, j, cur+1, board, word, vis) || dfs(i, j+1, cur+1, board, word, vis)|| dfs(i-1, j, cur+1, board, word, vis) || dfs(i, j-1, cur+1, board, word, vis);vis[i][j] = false; // 回溯return res;}
};int main(int arc, char *argv[]){// board = [["A","B","C","E"],["S","F","C","S"],["A","D","E","E"]]// word = "ABCCED"std::vector<std::vector<char>> board = {{'A', 'B', 'C', 'E'}, {'S', 'F', 'C', 'S'}, {'A', 'D', 'E', 'E'}};std::string word = "ABCCED";Solution S1;bool res = S1.exist(board, word);if(res) std::cout << "true" << std::endl;else std::cout << "false" << std::endl;return 0;
}

5--柱状图中最大的矩形(84)

主要思路:

                

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

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

相关文章

二级MySQL(九)——表格数据处理练习

在Mysql中&#xff0c;可以用INSERT或【REPLACE】语句&#xff0c;向数据库中已一个已有的表中插入一行或多行记录。 在Mysql中&#xff0c;可以用【DELETE】或【TRUNCATE】语句删除表中的所有记录。 在Mysql中&#xff0c;可以用【UPDATE】语句来修改数据表中的记录。 为了完…

lua的函数

1.一个示例实现列表的元素的求和 [root]# more funcAdd.lua function add(a)local sum 0for i 1,#a dosum sum a[i]endreturn sum enda {1,2,3,4,5,6}local sum add(a)print(sum)

〔018〕Stable Diffusion 之 批量替换人脸 篇

✨ 目录 &#x1f388; 下载插件&#x1f388; 插件基础使用&#x1f388; 基础使用效果&#x1f388; 批量处理图片&#x1f388; 多人脸部替换 &#x1f388; 下载插件 如果重绘图片的时候&#xff0c;你只想更换人物面部的话&#xff0c;可以参考这篇文章扩展地址&#xff…

ansible批量创建crontab文件并添加到定时任务

Ansible 来修改 crontab 文件并添加计划任务。用于将你提供的 cron 行添加到特定用户的 crontab 中&#xff1a; --- - name: Add cron job to users crontabhosts: your_target_hosttasks:- name: Add cron jobcron:name: "ntpdate_job"minute: "0"hour:…

LVS DR模式搭建

目录 一、DR模式概述 一、与NET模式的区别 二、操作命令图 三、搭建流程 一、首先配置三台虚拟机并配置环境&#xff08;关闭防火墙&#xff0c;宽容模式&#xff09; 二、ping通百度 三、在115.3的&#xff08;lvs&#xff09;虚拟机上安装 ipvsadm 四、调整ARP参数 五…

2023下半年杭州/广州/深圳NPDP产品经理国际认证开班啦

产品经理国际资格认证NPDP是新产品开发方面的认证&#xff0c;集理论、方法与实践为一体的全方位的知识体系&#xff0c;为公司组织层级进行规划、决策、执行提供良好的方法体系支撑。 【认证机构】 产品开发与管理协会&#xff08;PDMA&#xff09;成立于1979年&#xff0c;是…

rabbitMQ手动应答与自动应答

手动应答模式(manual) 解释: 手动应答:既是当消费者消费了队列中消息时需要给队列一个应答,告诉队列这条消息我已经消费了,可以删除了; 若是不应答,即使消费了 队列没收到消费成功的提示 所有消息会一直在队列中; 注意 注意 注意:重要的事情说三遍,下面说的…

K8S集群中使用JDOS KMS服务对敏感数据安全加密 | 京东云技术团队

基本概念 KMS&#xff0c;Key Management Service&#xff0c;即密钥管理服务&#xff0c;在K8S集群中&#xff0c;以驱动和插件的形式启用对Secret&#xff0c;Configmap进行加密。以保护敏感数据&#xff0c; 驱动和插件需要使用者按照需求进行定制和实现自己的KMS插件&…

如何判断一个java对象还活着

引用计数算法 引用计数器的算法是这样的&#xff1a;在对象中添加一个引用计数器&#xff0c;每当有一个地方引用它时&#xff0c;计数器值就加一&#xff1b;当引用失效时&#xff0c;计数器值就减一&#xff1b;任何时刻计数器为零的对象就是不可能再被使用的。 缺点&#x…

国际旅游网络的大数据分析(数学建模练习题)

题目&#xff1a;国际旅游网络的大数据分析 伴随着大数据时代的到来,数据分析已经深入到现代社会生活中的各个方面。 无论是国家政府部门、企事业单位还是个人&#xff0c;数据分析工作都是进行决策之前的 重要环节。 山东省应用统计学会是在省民政厅注册的学术类社会组织&…

机械臂手眼标定ZED相机——眼在手外python、matlab

目录 1.眼在手外原理 2.附上眼在手外求得手眼矩阵的python代码 3.眼在手外标定步骤 1&#xff09;打印棋盘格 2&#xff09;得到hand数据 3&#xff09;得到camera数据 4.运行python得到手眼矩阵 1.眼在手外原理 眼在手外所求的手眼矩阵是基坐标到相机的转换矩阵 2.附上…

分布式事务篇-2.1 阿里云轻量服务器--Docker--部署Seata

文章目录 前言一、Seata 介绍二、Docker 部署&#xff1a;2.1.拉取镜像&#xff1a;2.2.运行镜像&#xff1a;2.3.拷贝配置文件&#xff1a;2.4.部署&#xff1a;2.5.参数解释&#xff1a;2.5.1 端口&#xff1a;2.5.2 SEATA_IP&#xff1a;2.5.3 SEATA_PORT&#xff1a;2.5.4 …

MANIFEST.MF作用

你对MANIFEST.MF这个文件知道多少&#xff1f;_G探险者的博客-CSDN博客

Flask教程_编程入门自学教程_菜鸟教程-免费教程分享

教程简介 Flask是一个用Python编写的Web应用程序框架。 它由Armin Ronacher开发&#xff0c;他领导一个名为Pocco的国际Python爱好者团队。 Flask基于Werkzeug WSGI工具包和Jinja2模板引擎。两者都是Pocco项目。Flask 则以最简原则&#xff0c;自身框架只附带很简单的路由、模…

[Go版]算法通关村第十五关白银——海量数据场景下的热门算法题

目录 题目&#xff1a;从 40个亿 中产生一个不存在的整数要求&#xff1a;假设你有 1GB 的内存来完成这项任务Go代码 进阶&#xff1a;如果只有 10MB 的内存可用&#xff0c;该怎么办&#xff1f;1. 考虑10MB的内存&#xff0c;用位图存储的数据容量有多少&#xff1f;2. 考虑4…

计算机网络aaaaaaa

差错检测 在一段时间内&#xff0c;传输错误的比特占所传输比特总数的比率称为误码率BER(Bit Error Rate) 11111111111111111111111111111111111111111111111111111111111111111111111111111111 11111111111111111111111111111111111111111111111111111111111111111111111111…

如何允许远程访问MySQL

许多网站和应用程序一开始都将web服务器和数据库后端托管在同一台机器上。不过&#xff0c;随着时间的推移&#xff0c;这样的设置可能会变得繁琐和难以扩展。一种常见的解决方案是通过设置远程数据库来分离这些功能&#xff0c;允许服务器和数据库在各自的机器上按自己的速度增…

深入探讨代理技术:保障网络安全与爬虫效率

在当今数字化时代&#xff0c;代理技术在网络安全与爬虫领域扮演着重要角色。从Socks5代理、IP代理&#xff0c;到网络安全和爬虫应用&#xff0c;本文将深入探讨这些关键概念&#xff0c;揭示它们如何相互关联以提高网络安全性和爬虫效率。 1. 代理技术简介 代理技术是一种允…

c#在MVC Api(.net framework)当中使用Swagger,以及Demo下载

主要的步骤就是创建项目&#xff0c;通过nuget 添加Swashbuckle包&#xff0c;然后在SwaggerConfig当中进行相关的配置。 具体的步骤&#xff0c;可以参考下面的链接&#xff1a; https://www.cnblogs.com/94pm/p/8046580.htmlhttps://blog.csdn.net/xiaouncle/article/detail…

Boost开发指南-4.12utility

utility utility库不是一个有统一主题的Boost库&#xff0c;而是包含了若干个很小但有用的工具。 本章开头介绍的noncopyable.swap都曾经被归类在utility库里(现在则属于core库),此外utility还包括其他很多个实用类&#xff0c;如 base_from_member、compressed_pair、checke…