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

Leetcode刷题笔记--Hot21-30

1--全排列(46)

主要思路1:

        经典全排列,每次枚举每一位时,重头开始枚举,用一个访问数组记录当前已经被访问过的数字;

        这道题不包含重复数字,所以不需要进行树层上的剪枝;

#include <iostream>
#include <vector>class Solution {
public:std::vector<std::vector<int>> permute(std::vector<int>& nums) {if(nums.size() == 0) return res;std::vector<bool> vis(nums.size(), false);std::vector<int> tmp;dfs(nums, vis, tmp);return res;}void dfs(std::vector<int>& nums, std::vector<bool>& vis, std::vector<int> &tmp){if(tmp.size() == nums.size()){res.push_back(tmp);return;}for(int i = 0; i < nums.size(); i++){if(vis[i] == true) continue;tmp.push_back(nums[i]);vis[i] = true;dfs(nums, vis, tmp);// 回溯tmp.pop_back();vis[i] = false;}}
private:std::vector<std::vector<int>> res;
};int main(int argc, char *argv[]){std::vector<int> test = {1,2,3};Solution S1;std::vector<std::vector<int>> res = S1.permute(test);for(auto v : res){for(auto i : v) std::cout << i << " ";std::cout << std::endl;}
}

主要思路2:

        可以利用下一个排列的思想来枚举全排列,首先需要将数组进行从小到大排序,然后不断求解下一个排列,一个下一个排列就是一个新的排列,直到最大的排列为止;

#include <iostream>
#include <vector>
#include <algorithm>class Solution {
public:std::vector<std::vector<int>> permute(std::vector<int>& nums) {if(nums.size() == 0) return res;std::sort(nums.begin(), nums.end()); // 从小到大排列res.push_back(nums); // 记录最小的排列while(nextp(nums)){res.push_back(nums);}return res;}bool nextp(std::vector<int>& nums){int n = nums.size();// 找到第一个顺序对int i;for(i = n - 2; i >= 0; i--){if(nums[i] < nums[i+1]) break;}if(i == -1) return false; //已经是最大排列了// 找到一个nums[j] > 上面的nums[i]int j;for(j = n - 1; j > i; j--){if(nums[j] > nums[i]) break;}// 交换nums[i] 和 nums[j]std::swap(nums[i], nums[j]);// 反转num[i+1] ~ nums.end()std::reverse(nums.begin() + i + 1, nums.end());return true;}private:std::vector<std::vector<int>> res;
};int main(int argc, char *argv[]){std::vector<int> test = {1,2,3};Solution S1;std::vector<std::vector<int>> res = S1.permute(test);for(auto v : res){for(auto i : v) std::cout << i << " ";std::cout << std::endl;}
}

2--旋转图像(48)

主要思路:

         按层(圈)来旋转,对于坐标为(r, c)的值,其旋转后的坐标为(c, n - 1 - r),且每四个(上,右,下,左)为一个循环节,循环交换循环节中四个元素即可,视频讲解参考:旋转图像

#include <iostream>
#include <vector>
#include <algorithm>class Solution {
public:void rotate(std::vector<std::vector<int>>& matrix) {int n = matrix.size();// 按层(圈)处理for(int L = n; L > 0; L -= 2){// 左上角起始元素int row = (n - L) / 2;int col = row;// 当前这一行,顶行的前 L-1 个元素for(int k = 0; k < L - 1; k++){// 当前元素int r = row, c = col + k;int tmp = matrix[r][c];// 从(r, c)开始寻找循环节,循环节的长度一定是4for(int i = 0; i < 4; i++){// 旋转后的坐标int rr = c;int cc = n - 1 - r;// 旋转std::swap(tmp, matrix[rr][cc]);r = rr;c = cc;}}}}
};
int main(int argc, char *argv[]){std::vector<std::vector<int>> test = {{1,2,3}, {4,5,6}, {7,8,9}};Solution S1;S1.rotate(test);for(auto v : test){for(auto i : v) std::cout << i << " ";std::cout << std::endl;}
}

3--字母异位词分组(49)

主要思路:

        

相关文章:

Leetcode刷题笔记--Hot21-30

1--全排列&#xff08;46&#xff09; 主要思路1&#xff1a; 经典全排列&#xff0c;每次枚举每一位时&#xff0c;重头开始枚举&#xff0c;用一个访问数组记录当前已经被访问过的数字&#xff1b; 这道题不包含重复数字&#xff0c;所以不需要进行树层上的剪枝&#xff1b; …...

【MyBatis八股】MyBatis面试题

目录 MyBatis是什么&#xff1f;Mybaits的优缺点&#xff1f;为什么说Mybatis是半自动ORM映射工具&#xff1f;它与全自动的区别在哪里&#xff1f;Hibernate 和 MyBatis 的区别&#xff1f;JDBC编程有哪些不足之处&#xff0c;MyBatis是如何解决这些问题的&#xff1f;MyBatis…...

Apache Hudi初探(二)(与flink的结合)--flink写hudi的操作(JobManager端的提交操作)

背景 在Apache Hudi初探(一)(与flink的结合)中&#xff0c;我们提到了Pipelines.hoodieStreamWrite 写hudi文件,这个操作真正写hudi是在Pipelines.hoodieStreamWrite方法下的transform(opName("stream_write", conf), TypeInformation.of(Object.class), operatorFa…...

Office ---- excel ---- 怎么批量设置行高

解决方法&#xff1a; 调整行高即可...

Wlan——STA上线流程与802.11MAC帧讲解

目录 802.11MAC帧基本概念 802.11帧结构 802.11MAC帧的分类 管理帧 控制帧 数据帧 STA接入无线网络流程 信号扫描—管理帧 链路认证—管理帧 用户关联—管理帧 用户上线 802.11MAC帧基本概念 802.11协议在802家族中的角色位置 其中802.3标准属于以太网的一种帧格式…...

HTTP的并发连接限制和连接线程池

为什么有并发连接限制和连接线程池 大量的客户端连接到服务器&#xff0c;会导致服务器端需要大量的维护连接资源&#xff0c;同时需要处理客户端的请求&#xff0c;这是如何高效的执行任务成了一个关键的问题&#xff0c;所以&#xff0c;并发连接限制和连接线程池的出现就是…...

【从零学习python 】45.Python中的类方法和静态方法

文章目录 类方法、静态方法类方法静态方法使用场景 进阶案例 类方法、静态方法 类方法 类方法是以类对象作为第一个参数的方法。需要使用装饰器classmethod来标识其为类方法。对于类方法&#xff0c;第一个参数必须是类对象&#xff0c;一般以cls作为第一个参数。 class Dog…...

基于 VisualFoxPro 环境开发应用程序的过程

应用程序开发前开发者要与用户之间广泛沟通&#xff0c;作大量的调查研究和分析工 作&#xff0c;从而明确用户的要求、程序应具备的功能及可以完成的任务。为此要进行两方 面的分析&#xff0c;数据分析和功能分析。数据分析的目的是收集系统应包含的数据、数据 的真实性、…...

SpringBoot整合Quartz,实现数据库方式执行定时任务

springboot整合quartz&#xff0c;实现数据库方式执行定时任务。把定时任务信息存进数据库&#xff0c;项目启动后自动执行定时任务。 1.引入依赖包&#xff1a; <dependency> <groupId>org.springframework.boot</groupId> <ar…...

java中多个list怎么用List表示?

如果你有多个List对象&#xff0c;想要将它们合并成一个List对象&#xff0c;可以使用addAll()方法来实现。addAll()方法将会把一个List中的元素逐个添加到另一个List中。 以下是一个示例&#xff0c;展示了如何将多个List对象合并为一个List对象&#xff1a; import java.ut…...

postgresql 数据排序

postgresql 常见操作 排序总结 排序 -- 排序的时候null是最大的值(看一下) select employee_id,manager_id from employeesorder by manager_id desc;-- nulls first使null值排在第一位 select employee_id,manager_id from employeesorder by manager_id nulls first;-- null…...

虚拟机 net、桥接、主机三种网络模式寻根问底

虚拟机使用物理主机上的网络适配器直接连接到物理网络中。 这意味着虚拟机就像是通过网线直接连接到路由器一样,成为物理网络中的一个独立设备。 虚拟机可以获取一个永久的IP地址,通过DHCP或手动设置。 虚拟机和物理主机都可以访问对方以及公共网络中的其他设备,比如文件服务…...

python代码——批量将PPT转换成长图

语言&#xff1a;python 3 用法&#xff1a;点击运行后&#xff0c;弹出窗口&#xff0c;选择文件夹&#xff0c;程序运行会将文件夹内的所有PPT文件全部转换成PPT长图&#xff0c;图片名称与PPT文件名称相同&#xff0c;保存位置相同。 如运行中报错&#xff0c;需要自行根据…...

C++信息学奥赛2046:【例5.15】替换字母

这段代码的功能是对输入的字符串进行处理&#xff0c;将字符串中的字符 a 替换为字符 b 后输出结果。 #include<bits/stdc.h> using namespace std; int main() {string s; // 定义字符串变量s&#xff0c;用来存储输入的字符串char a, b; // 定义字符变量a和b&#xff…...

每天一道leetcode:1306. 跳跃游戏 III(图论中等广度优先遍历)

今日份题目&#xff1a; 这里有一个非负整数数组 arr&#xff0c;你最开始位于该数组的起始下标 start 处。当你位于下标 i 处时&#xff0c;你可以跳到 i arr[i] 或者 i - arr[i]。 请你判断自己是否能够跳到对应元素值为 0 的 **任一** 下标处。 注意&#xff0c;不管是什…...

76参考链接

参考链接 官方文件综合介绍[let 和 const](https://es6.ruanyifeng.com/#docs/reference#let 和 const)解构赋值字符串正则数值数组函数对象Symbol[Set 和 Map](https://es6.ruanyifeng.com/#docs/reference#Set 和 Map)[Proxy 和 Reflect](https://es6.ruanyifeng.com/#docs/…...

浅析Linux SCSI子系统:调试方法

文章目录 SCSI日志调试功能scsi_logging_level调整SCSI日志等级 SCSI trace events使能SCSI trace events方式一&#xff1a;通过set_event接口方式二&#xff1a;通过enable 跟踪trace信息 相关参考 SCSI日志调试功能 SCSI子系统支持内核选项CONFIG_SCSI_LOGGING配置日志调试…...

【Unity3D】水面特效

1 前言 水波特效 中通过屏幕后处理实现了环形水波效果&#xff0c;本文通过 Shader Graph 实现了模拟水面特效&#xff0c;包含以下特效细节。 深水区和浅水区颜色差异&#xff1b;水面有波纹&#xff0c;并且在移动&#xff1b;水面起伏波动&#xff1b;水面边缘有水泡&#…...

CSS中的flex布局详细讲解

Flex 布局 Flex 布局是一种现代的 CSS 布局模型&#xff0c;用于实现灵活的盒子布局。它提供了强大的布局能力&#xff0c;使得元素可以自动调整大小、对齐和分布&#xff0c;适用于构建响应式和可伸缩的布局。 Flex 布局使用 flex 容器和 flex 项目的概念。容器是一个父元素…...

Python功能制作之简单的音乐播放器

需要导入的库&#xff1a; pip install PyQt5 源码&#xff1a; import os from PyQt5.QtCore import Qt, QUrl from PyQt5.QtGui import QIcon, QPixmap from PyQt5.QtMultimedia import QMediaPlayer, QMediaContent from PyQt5.QtWidgets import QApplication, QMainWind…...

JEECG Boot项目实战:如何优雅地移除登录验证码(前后端完整操作指南)

JEECG Boot项目实战&#xff1a;如何优雅地移除登录验证码&#xff08;前后端完整操作指南&#xff09; 在JEECG Boot的开发过程中&#xff0c;验证码功能虽然能有效防止恶意登录&#xff0c;但在某些特定场景下反而会成为效率瓶颈。想象一下这样的场景&#xff1a;开发团队正在…...

别再死记硬背了!一张图+一个故事,帮你彻底搞懂分治、动态规划和贪心法的区别

算法三剑客&#xff1a;用旅行规划故事理解分治、动态规划与贪心法 想象你正在计划一次横跨欧亚大陆的三个月背包旅行。面对错综复杂的路线选择、预算分配和景点取舍&#xff0c;不同的决策策略会带来截然不同的旅行体验——这恰恰是分治法、动态规划和贪心算法在现实中的生动映…...

OpenMPI进程绑定实战:如何用--bind-to和--map-by提升HPC应用性能(附Slurm配置示例)

OpenMPI进程绑定实战&#xff1a;NUMA架构下的性能优化与Slurm集成指南 1. 高性能计算中的进程绑定核心原理 在现代高性能计算环境中&#xff0c;CPU核心绑定技术已成为提升并行计算效率的关键手段。当我们在双路CPU服务器上运行计算密集型应用时&#xff0c;经常会遇到"一…...

告别传统BPMN:wflow工作流设计器如何让普通员工5分钟搭建审批流程?

告别传统BPMN&#xff1a;wflow工作流设计器如何让普通员工5分钟搭建审批流程&#xff1f; 【免费下载链接】wflow workflow 工作流设计器&#xff0c;企业OA流程设计。表单流程设计界面操作超级简单&#xff01;&#xff01;普通用户也能分分钟上手&#xff0c;不需要专业知识…...

SenseVoice-small保姆级教程:Mac/Windows本地快速启动WebUI步骤

SenseVoice-small保姆级教程&#xff1a;Mac/Windows本地快速启动WebUI步骤 你是不是也遇到过这样的场景&#xff1f;开完会想整理录音&#xff0c;发现要上传到云端才能转文字&#xff0c;担心隐私泄露&#xff1b;或者想给视频加字幕&#xff0c;但手动打字太费时间&#xf…...

GPIO输入模式深度解析:STM32按键检测中IDR寄存器的使用技巧与常见问题

STM32 GPIO输入模式实战&#xff1a;从IDR寄存器到工业级按键检测方案 在嵌入式开发中&#xff0c;GPIO输入模式是实现人机交互的基础功能之一。对于STM32开发者而言&#xff0c;深入理解IDR寄存器的工作原理和按键检测的实现技巧&#xff0c;往往决定着产品交互的可靠性和响应…...

《机器学习》实战指南:从理论到代码的完整学习路径

1. 机器学习入门&#xff1a;从零开始的认知地图 第一次接触机器学习时&#xff0c;我被各种算法名词轰炸得头晕目眩——就像走进一家陌生的超市&#xff0c;货架上摆满看不懂标签的罐头。后来才发现&#xff0c;掌握机器学习的关键在于建立正确的认知框架。这里分享我摸索出的…...

CosyVoice CPU部署实战:如何优化AI语音模型的推理速度

最近在做一个智能客服项目&#xff0c;需要把语音合成模型部署到一些只有CPU的服务器上。一开始直接用PyTorch加载CosyVoice模型&#xff0c;那个推理速度真是让人着急&#xff0c;生成一句话要等好几秒&#xff0c;完全没法满足实时交互的需求。这让我下定决心&#xff0c;必须…...

嵌入式无锁环形缓冲区:SPSC零依赖实现

1. 项目概述nl_ring_buffer是一个极简、零依赖、可移植的环形缓冲区&#xff08;Circular Buffer&#xff09;实现&#xff0c;专为嵌入式系统底层开发设计。其核心目标并非提供功能堆砌&#xff0c;而是以最小代码体积、确定性执行时间、无动态内存分配、无锁&#xff08;lock…...

Python农业图像识别精度为何卡在92.3%?揭秘3个被90%开发者忽略的标注陷阱与突破路径

第一章&#xff1a;Python农业图像识别精度为何卡在92.3%&#xff1f;在多个田间部署的玉米病害识别模型中&#xff0c;验证集准确率稳定收敛于92.3%&#xff0c;进一步调参或增加训练轮次均未突破该阈值。深入分析发现&#xff0c;该瓶颈并非源于模型容量不足&#xff0c;而是…...