代码随想录算法训练营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://www.mzph.cn/diannao/47471.shtml

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

相关文章

关于Linux的面试题(实时更新中~)

一、软连接和硬连接的区别&#xff1a; 软连接创建方式 ln -s 被链接文件 链接文件 &#xff08;1&#xff09;软链接是一个链接文件&#xff1b; &#xff08;2&#xff09;软链接有着自己的 inode 号&#xff08;文件编号&#xff09;&#xff1b; &#xff08;3&#…

Linux入门攻坚——28、php、mysql基础

httpdphp&#xff1a;是在httpd中启用模块&#xff0c;不同的工作模式&#xff0c;使用的模块不同 modules httpd&#xff1a;prefork --> libphp5.so httpd&#xff1a;event or worker --> libphp5-zts.so php&#xff1a;引入zend engine后&#xff0c;分为…

复现GMM文章(五):图5代码和数据

介绍 复现GMM文章的的Fig5图。 加载R包 library(tidyr) library(tidyverse) library(dplyr) library(ggsci) library(ggpubr) library(psych) library(ggcorrplot) library(showtext) library(ggrepel)导入数据 所有的数据可以通过下列链接下载&#xff1a; 百度网盘链接…

Unity | Shader基础知识(第十八集:Stencil应用-透视立方盒子)

目录 一、前言 二、场景布置 三、 shader部分 1.图片的部分 2.图片部分纯净代码 3.遮罩部分复习 4.深度写入 ZWrite 5.颜色遮罩ColorMask 6.遮罩纯净代码 四、场景中shader使用 五、作者的碎碎念 一、前言 因为这个内容稍微有点多&#xff0c;我尽力讲清楚了&#x…

mac拆分pdf mac如何拆分pdf成多个文件

在数字化办公日益普及的今天&#xff0c;pdf文件因其良好的兼容性和便捷性&#xff0c;已经成为工作和学习中的重要文件格式。然而&#xff0c;有时候我们可能会遇到需要将一个大的pdf文件拆分成多个小文件的情况&#xff0c;以便于管一理和分享。本文将为您详细介绍两种简单易…

MySQL 和 PostgreSQL,我到底选择哪个?

MySQL 和 PostgreSQL 是两个广泛使用的关系型数据库管理系统&#xff08;RDBMS&#xff09;。它们都具有强大的功能和广泛的社区支持&#xff0c;但在某些方面存在一些差异。本文将详细比较 MySQL 和 PostgreSQL&#xff0c;包括它们的特点、性能、扩展性、安全性以及适用场景等…

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

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

virtualbox的ubuntu默认ipv4地址为10.0.2.15的修改以及xshell和xftp的连接

virtualbox安装Ubuntu后&#xff0c;默认的地址为10.0.2.15 我们查看virtualbox的设置发现是NAT 学过计算机网络的应该了解NAT技术&#xff0c;为了安全以及缓解ip使用&#xff0c;我们留了部分私有ip地址。 私有IP地址网段如下&#xff1a; A类&#xff1a;1个A类网段&…

hexo搭建博客(github node git )(失败版本)

HexoGitHub搭建个人博客教程&#xff08;2023最新版&#xff09; 搭建失败了 是因为git命令一直报错 打算明天把git和node版本全部重新安装后再弄 同时回顾一下github git 和 node的基础知识 Github新手之路&#xff08;全过程&#xff09;&#xff08;站在前辈的肩膀上的总…

Template_C++

C模板 C提供了function template. function template&#xff1a;实际上是建立一个通用函数&#xff0c;其函数类型和形参类型不具体制定&#xff0c;用一个虚拟的类型来代表。这个通用的函数就称为函数模版。 是不是可以这样理解&#xff0c;函数模版就是给了一种功能&…

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…

【zabbix6监控java-tomcat全流程】

目录 一、监控主机安装zabbix-server1、zabbix的安装2、配置数据库3、为zabbix server配置数据库4、启动服务,web界面安装 二、被监控主机安装tomcat1、安装JDK2、安装tomcat 三、zabbix的服务端安装zabbix-java-gateway四、被监控主机tomcat的配置五、web界面添加主机 一、监控…

使用 Web APi - MediaRecorder 获取麦克风资源,报错:Cannot find name ‘MediaRecorder‘ 的解决方法

目录 一、背景&#xff1a; 二、具体解决方法 一、背景&#xff1a; angular 调用 MediaRecorder 来使用麦克风获取声音&#xff0c;&#xff08;具体要求&#xff1a;angular 前端 按键调用 麦克风&#xff0c;松开按键生成音频文件&#xff09;代码如下&#xff08;来自通…

【树莓派3B+】控制引脚输出高低电平

前言一、安装RPI.GPIO库二、编写简单的输出高低电平的程序三、运行程序总结 前言 首先检查一下自己的板子有没有带库 我这个是有的。 ok&#xff0c;正式进入步骤 一、安装RPI.GPIO库 如果还没有安装RPi.GPIO库&#xff0c;可以通过以下命令在树莓派上安装&#xff1a; p…

Ubuntu20.04从零开搭PX4MavrosGazebo环境并测试

仅仅是个人搭建记录 参考链接&#xff1a; https://zhuanlan.zhihu.com/p/686439920 仿真平台基础配置&#xff08;对应PX4 1.13版&#xff09; 语雀 mkdir -p ~/tzb/catkin_ws/src mkdir -p ~/tzb/catkin_ws/scripts cd catkin_ws && catkin init catkin build cd…

数据结构day2

一、思维导图 内存分配 二、课后习题 分文件编译 //sys.h #ifndef TEST_H #define TEST_H #define MAX_SIZE 100//定义学生类型 typedef struct Stu {char name[20]; //姓名int age; //年龄double score; //分数 }stu;//定义班级类型 typedef struct Class {struct …

实战:详解Spring创建bean的流程(图解+示例+源码)

概叙 这篇主要总结Spring中bean的创建过程&#xff0c;主要分为加载bean信息–>实例化bean–>属性填充–>初始化阶段–>后置处理等步骤&#xff0c;且每个步骤Spring做的事情都很多&#xff0c;这块源码还是很值得我们都去看一看的。而Spring中Bean的声明周期其实…

GEO数据挖掘从数据下载处理质控到差异分析全流程分析步骤指南

0. 综合的教学视频介绍 GEO数据库挖掘分析作图全流程每晚11点在线教学直播录屏回放视频&#xff1a; https://www.bilibili.com/video/BV1rm42157CT/ GEO数据从下载到各种挖掘分析全流程详解&#xff1a; https://www.bilibili.com/video/BV1nm42157ii/ 一篇今年近期发表的转…

捷配总结的SMT工厂安全防静电规则

SMT工厂须熟记的安全防静电规则&#xff01; 安全对于我们非常重要&#xff0c;特别是我们这种SMT加工厂&#xff0c;通常我们所讲的安全是指人身安全。 但这里我们须树立一个较为全面的安全常识就是在强调人身安全的同时亦必须注意设备、产品的安全。 电气&#xff1a; 怎样预…

IDEA 调试 Ja-Netfilter

首先本地需要有两款IDEA 可以是相同版本&#xff0c;也可以是不同版本。反正要有两个&#xff0c;一个用来调试代码&#xff0c;一个启动。 移除原有ja-netfiler 打开你的ja-netfiler的vmoptions目录&#xff0c;修改其中的idea.vmoptions文件。移除最后一行-javaagent ...参…