代码随想录算法训练营Day26 | 491.递增子序列 | 46.全排列 | 47.全排列 II | 332.重新安排行程 | 51.N皇后 | 37.解数独

今日任务

491.递增子序列

  • 题目链接: https://leetcode.cn/problems/non-decreasing-subsequences/description/
  • 题目描述
    在这里插入图片描述

Code

class Solution {
public:vector<vector<int>> findSubsequences(vector<int>& nums) {vector<vector<int>> ans;vector<int> path;int n = nums.size();// function<void(int)> dfs = [&](int i)->void{//     if(path.size() > 1){//         ans.emplace_back(path);//     }//     if(i == n){//         return;//     }//     vector<bool> visited(201);//     for(int j = i; j < n; j++){//         if(!path.empty() && nums[j] < path.back() || j > i && nums[j - 1] == nums[j]//             || visited[nums[j] + 100]){//             continue;//         }//         visited[nums[j] + 100] = true;//         path.push_back(nums[j]);//         dfs(j + 1);//         path.pop_back();//     }// };// 选或不选function<void(int)> dfs = [&](int i)->void{if(i == n){if(path.size() > 1){ans.emplace_back(path);}return;}// 不选if(path.empty() || nums[i] != path.back()){dfs(i + 1);}// 选if(path.empty() || nums[i] >= path.back()){path.push_back(nums[i]);dfs(i + 1);path.pop_back();}};dfs(0);return ans;}
};

46.全排列

  • 题目链接: https://leetcode.cn/problems/permutations/description/
  • 题目描述
    在这里插入图片描述

Code

class Solution {
public:vector<vector<int>> permute(vector<int>& nums) {vector<vector<int>> ans;int n = nums.size();vector<int> path(n);// vector<bool> visit(n);// function<void(int)> dfs = [&](int i)->void{//     if(i == n){//         ans.emplace_back(path);//         return;//     }//     for(int j = 0; j < n; j++){     //         if(!visit[j]){//             path[i] = nums[j]; ////             visit[j] = true;//             dfs(i + 1); // //             visit[j] = false;//         }//     }// };function<void(int)> dfs = [&](int i)->void{if(i == n){ans.emplace_back(path);return;}for(int j = 0; j < n; j++){     if(nums[j] <= 10){path[i] = nums[j]; //nums[j] += 21;dfs(i + 1); // nums[j] -= 21;}}};dfs(0);return ans;}
};

47.全排列 II

  • 题目链接: https://leetcode.cn/problems/permutations-ii/description/
  • 题目描述
    在这里插入图片描述

Code

class Solution {
public:vector<vector<int>> permuteUnique(vector<int>& nums) {vector<vector<int>> ans;int n = nums.size();vector<int> path;ranges::sort(nums);vector<int> visited(n);function<void(int)> dfs = [&](int i)->void{if(i == n){ans.emplace_back(path);return;}for(int j = 0; j < n; j++){if(visited[j] || j > 0 && nums[j] == nums[j - 1] && !visited[j - 1]){continue;}path.push_back(nums[j]);visited[j] = true;dfs(i + 1);visited[j] = false;path.pop_back();}};dfs(0);return ans;}
};

332.重新安排行程

  • 题目链接: https://leetcode.cn/problems/reconstruct-itinerary/description/
  • 题目描述
    在这里插入图片描述

Code

class Solution {
public:vector<string> findItinerary(vector<vector<string>>& tickets) {vector<string> ans = {"JFK"};unordered_map<string, map<string, int>> targets;for(auto &ticket : tickets){targets[ticket[0]][ticket[1]]++;}function<bool(int)> dfs = [&](int i)->bool{if(ans.size() == i + 1){return true;}for(auto &[destination, cnt] : targets[ans.back()]){if(cnt > 0){ans.push_back(destination);cnt--;if(dfs(i)){return true;}ans.pop_back();cnt++;}}return false;};dfs(tickets.size());return ans;}
};

51.N皇后

  • 题目链接: https://leetcode.cn/problems/n-queens/
  • 题目描述
    在这里插入图片描述

Code

class Solution {
public:vector<vector<string>> solveNQueens(int n) {vector<vector<string>> ans;vector<int> columns(n);vector<bool> on_path(n), diag1(2 * n - 1), diag2(2 * n - 1);function<void(int)> dfs = [&](int r)->void {if(r == n){vector<string> board(n);for(int i = 0; i < n; i++){board[i] = string(columns[i], '.') + 'Q' + string(n - 1 - columns[i], '.');}ans.emplace_back(board);return;}for(int c = 0; c < n; c++){int rc = r - c + n - 1;if(!on_path[c] && !diag1[r + c] && !diag2[rc]){columns[r] = c;on_path[c] = diag1[r + c] = diag2[rc] = true;dfs(r + 1);on_path[c] = diag1[r + c] = diag2[rc] = false;}}};dfs(0);return ans;}
};

37.解数独

  • 题目链接: https://leetcode.cn/problems/sudoku-solver/
  • 题目描述
    在这里插入图片描述

Code

class Solution {
public:void solveSudoku(vector<vector<char>>& board) {// function<bool(int, int, char)> isValid = [&](int row, int column, char val)->bool{//     for(int i = 0; i < 9; i++){//         if(board[row][i] == val || board[i][column] == val){//             return false;//         }//     }//     int startRow = (row / 3) * 3;//     int startCol = (column / 3) * 3;//     for(int i = startRow; i < startRow + 3; i++){//         for(int j = startCol; j < startCol + 3; j++){//             if(board[i][j] == val){//                 return false;//             }//         }//     }//     return true;// };// function<bool()> dfs = [&]()->bool{//     for(int i = 0; i < 9; i++){//         for(int j = 0; j < 9; j++){//             if(board[i][j] == '.'){//                 for(char c = '1'; c <= '9'; c++){//                     if(isValid(i, j, c)){//                         board[i][j] = c;//                         if(dfs()){//                             return true;//                         }//                         board[i][j] = '.';//                     }//                 }//                 return false;//             }//         }//     }//     return true;// };// dfs();// bitsetvector<bitset<9>> rows(9, bitset<9>());vector<bitset<9>> columns(9, bitset<9>());vector<vector<bitset<9>>> cells(3, vector<bitset<9>>(3, bitset<9>()));function<bitset<9>(int, int)> getPossibleStatus = [&](int x, int y)->bitset<9>{return ~(rows[x] | columns[y] | cells[x / 3][y / 3]);};function<vector<int>()> getNext = [&]()->vector<int>{vector<int> ret;int minCnt = 10;for(int i = 0; i < 9; i++){for(int j = 0; j < 9; j++){if(board[i][j] != '.'){continue;}auto cur = getPossibleStatus(i, j);if(cur.count() >= minCnt){continue;}ret = {i, j};minCnt = cur.count();}}return ret;};function<void(int ,int ,int , bool)> fillNum = [&](int x, int y, int n, bool fillFlag)->void{rows[x][n] = (fillFlag) ? 1 :0;columns[y][n] = (fillFlag) ? 1 : 0;cells[x / 3][y / 3][n] = (fillFlag) ? 1 : 0;};function<bool(int)> dfs = [&](int i)->bool{if(i == 0){return true;}auto next = getNext();auto bits = getPossibleStatus(next[0], next[1]);for(int n = 0; n < bits.size(); n++){if(!bits.test(n)){continue;}fillNum(next[0], next[1], n, true);board[next[0]][next[1]] = n + '1';if(dfs(i - 1)){return true;}board[next[0]][next[1]] = '.';fillNum(next[0], next[1], n, false);}return false;};int cnt = 0;for(int i = 0; i < 9; i++){for(int j = 0; j < 9; j++){cnt += (board[i][j] == '.');if(board[i][j] == '.'){continue;}int n = board[i][j] - '1';rows[i] |= (1 << n);columns[j] |= (1 << n);cells[i / 3][j / 3] |= (1 << n);}}dfs(cnt);}
};

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

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

SSE(Server Sent Event)实战(2)- Spring MVC 实现

一、服务端实现 使用 RestController 注解创建一个控制器类&#xff08;Controller&#xff09; 创建一个方法来创建一个客户端连接&#xff0c;它返回一个 SseEmitter&#xff0c;处理 GET 请求并产生&#xff08;produces&#xff09;文本/事件流 (text/event-stream) 创建…

leetcode145. 二叉树的后序遍历,递归法+迭代法,全过程图解+步步解析,一点点教会你迭代法后序遍历

leetcode145. 二叉树的后序遍历&#xff0c;递归法迭代法 给你一棵二叉树的根节点 root &#xff0c;返回其节点值的 后序遍历 。 示例 1&#xff1a; 输入&#xff1a;root [1,null,2,3] 输出&#xff1a;[3,2,1] 示例 2&#xff1a; 输入&#xff1a;root [] 输出&#…

vue、js截取视频任意一帧图片

html有本地上传替换部分&#xff0c;可以不看 原理&#xff1a;通过video标签对视频进行加载&#xff0c;随后使用canvas对截取的视频帧生成需要的图片 <template> <el-row :gutter"18" class"preview-video"><h4>视频预览<span&…

LabVIEW电路产品功能自动检测系统

开发基于LabVIEW的电路产品功能自动检测系统。该系统通过整合先进的硬件和软件技术&#xff0c;实现了电路产品的自动化测试&#xff0c;显著提高了测试效率和准确性&#xff0c;对于提升电子产品的可靠性和工作效率具有重要意义。 项目背景 在电子制造业中&#xff0c;电路产…

PyCharm查看文件或代码变更记录

背景&#xff1a; Mac笔记本上有一个截图的定时任务在运行&#xff0c;本地Python使用的是PyCharm IDE&#xff0c;负责的同事休假&#xff0c;然后定时任务运行的结果不符合预期&#xff0c;一下子不知道问题出现在哪里。 定位思路&#xff1a; 1、先确认网络、账号等基本的…

git使用以及理解

git练习网站 Learn Git Branching git操作大全Oh Shit, Git!?! git commit git branch name git merge bugFix 合并俩个分支 git rebase main git checkout headgit switch head 会导致HEAD分离 &#xff0c;就是指head->HEAD->c1 相对引用 ------------------- …

测试面试宝典(十四)—— 你觉得软件测试的核心竞争力是什么?

回答一&#xff1a; 软件测试的核心竞争力在于其能够保障软件产品的质量和可靠性。 首先&#xff0c;测试人员需要具备敏锐的观察力和细致入微的分析能力&#xff0c;能够在复杂的系统中发现潜在的缺陷和问题。例如&#xff0c;在测试一款电商平台时&#xff0c;不仅要关注订…

Apache AGE的MATCH子句

MATCH子句允许您在数据库中指定查询将搜索的模式。这是检索数据以在查询中使用的主要方法。 通常在MATCH子句之后会跟随一个WHERE子句&#xff0c;以添加用户定义的限制条件到匹配的模式中&#xff0c;以操纵返回的数据集。谓词是模式描述的一部分&#xff0c;不应被视为仅在匹…

【TDA4板端部署】基于 Pytorch 训练并部署 ONNX 模型在 TDA4

1 将torch模型转onnx模型 Ti转换工具只支持以下格式&#xff1a; Caffe - 0.17 (caffe-jacinto in gitHub) Tensorflow - 1.12 ONNX - 1.3.0 (opset 9 and 11) TFLite - Tensorflow 2.0-Alpha 基于 Tensorflow、Pytorch、Caffe 等训练框架&#xff0c;训练模型&#xff1a;选择…

多多OJ评测系统 前端项目环境初始化 安装Vue脚手架 引入Arco Design组件

目录 确定环境 命令行输入 装一下脚手架 监测一下是否安装成功 创建一个项目 选择一系列的配置后 我们打开webStorm 配置脚手架后我们先运行 我们这边能获取到网址 其实我们脚手架已经帮我们做到了 接下来要引入相关的组件 选择用npm进行安装 我们建议的是完整引入…

姓名配对测试源码

源码简介 姓名配对测试源码&#xff0c;输入两人姓名即可测试缘分&#xff0c;可查看朋友到底喜欢谁的趣味源码。 自己手动在数据库里修改数据&#xff0c;数据库里有就会优先查询数据库的信息&#xff0c; 没设置的话第一次查询缘分都是非常好的 95-99&#xff0c;第二次查…

Spring Web MVC(常用的注解@RequestMapping,@RequestParam,@RequestBody等)

一、Spring MVC spring的启动类 启动类是看这个 SpringBootApplication 注解&#xff0c;而不是 类的名字 这个注解在哪&#xff0c;哪个类就是启动类 1.MVC思想 举例 二、Spring MVC mvc 是一种思想&#xff0c;而spring mvc是对mvc思想的一种实现。全称是 spring web mvc…

pytorch学习(四)绘制loss和correct曲线

这一次学习的时候静态绘制loss和correct曲线&#xff0c;也就是在模型训练完成后&#xff0c;对统计的数据进行绘制。 以minist数据训练为例子 import torch from torch import nn from torch.utils.data import DataLoader from torchvision import datasets from torchvisi…

Prometheus智能化监控介绍

Prometheus智能化监控介绍 官方网站特点&#xff1a;样本 Prometheus组件Prometheus工作流程Prometheus和zabbix对比分析Prometheus的几种部署模式Prometheus的四种数据类型CounterGaugehistogram为什需要用histogram柱状图&#xff1f; summary Prometheus对kubernetes的监控介…

文献阅读:tidyomics 生态系统:增强组学数据分析

文献介绍 文献题目&#xff1a; The tidyomics ecosystem: enhancing omic data analyses 研究团队&#xff1a; Stefano Mangiola&#xff08;澳大利亚沃尔特和伊丽莎霍尔医学研究所&#xff09;、Michael I. Love&#xff08;美国北卡罗来纳大学教堂山分校&#xff09;、Ant…

C#开发:PowerDesigner建表和Navicat导入数据

一、打开Powerdesigner&#xff0c;新建一个模型&#xff0c;点击ok 二、用工具面板拖拽出一个数据表 &#xff08;如果没有工具面板&#xff0c;请在如下操作中开启&#xff09; 三、双击刚刚的拖拽出来的表&#xff0c;设计表的字段&#xff0c;可以添加注释说明 【备注】…

基于Vue CLI 3构建Vue3项目(Vue2也可参考)

天行健&#xff0c;君子以自强不息&#xff1b;地势坤&#xff0c;君子以厚德载物。 每个人都有惰性&#xff0c;但不断学习是好好生活的根本&#xff0c;共勉&#xff01; 文章均为学习整理笔记&#xff0c;分享记录为主&#xff0c;如有错误请指正&#xff0c;共同学习进步。…

完美解决An error occurred while starting the kernel的正确解决方法,亲测有效!!!

完美解决An error occurred while starting the kernel的正确解决方法&#xff0c;亲测有效&#xff01;&#xff01;&#xff01; 亲测有效 完美解决An error occurred while starting the kernel的正确解决方法&#xff0c;亲测有效&#xff01;&#xff01;&#xff01;报错…

03 Git的基本使用

第3章&#xff1a;Git的基本使用 一、创建版本仓库 一&#xff09;TortoiseGit ​ 选择项目地址&#xff0c;右键&#xff0c;创建版本库 ​ 初始化git init版本库 ​ 查看是否生成.git文件&#xff08;隐藏文件&#xff09; 二&#xff09;Git ​ 选择项目地址&#xff0c…

Chromium CI/CD 之Jenkins实用指南2024- Windows节点开启SSH服务(七)

1.引言 在现代软件开发和持续集成的过程中&#xff0c;自动化部署和远程管理是不可或缺的关键环节。SSH&#xff08;Secure Shell&#xff09;协议以其强大的安全性和灵活性&#xff0c;成为连接和管理远程服务器的首选工具。对于使用Windows虚拟机作为Jenkins从节点的开发者而…