LeeCode Practice Journal | Day25_Backtracking04

491. 非递减子序列

题目:491. 非递减子序列 - 力扣(LeetCode)
题解:代码随想录 (programmercarl.com)

solution
public class Solution {public List<IList<int>> results = new List<IList<int>>();public IList<IList<int>> FindSubsequences(int[] nums) {List<int> result = new List<int>();subTraversal(nums, 0, result);return results;}public void subTraversal(int[] nums, int start, List<int> result){HashSet<int> numbers = new HashSet<int>();for(int i = start; i < nums.Length; i ++){if(result.Count > 0 && nums[i] < result[result.Count - 1]) {continue;  }if(numbers.Add(nums[i])){result.Add(nums[i]);if(result.Count > 1) results.Add(new List<int>(result));subTraversal(nums, i + 1, result);result.RemoveAt(result.Count - 1);}}}
}
summary

key:

HashSet同层查重

错误:

1、题意理解有误
递增子序列指在数组原顺序下的

2、子序列至少有两个元素

46. 全排列

题目:46. 全排列 - 力扣(LeetCode)
题解:代码随想录 (programmercarl.com)
排列问题,使用数组或哈希表记录元素,也算一种树枝去重?

solution
public class Solution {public List<IList<int>> results = new List<IList<int>>(); public IList<IList<int>> Permute(int[] nums) {List<int> result = new List<int>();HashSet<int> numbers = new HashSet<int>();permuteTraversal(nums, numbers, result);return results;}public void permuteTraversal(int[] nums, HashSet<int> numbers, List<int> result){if(result.Count == nums.Length){results.Add(new List<int>(result));return;}for(int i = 0; i < nums.Length; i ++){if(numbers.Add(nums[i])){result.Add(nums[i]);permuteTraversal(nums, numbers, result);result.RemoveAt(result.Count - 1);numbers.Remove(nums[i]);}}}
}
summary

47. 全排列Ⅱ

题目:47. 全排列 II - 力扣(LeetCode)
题解:代码随想录 (programmercarl.com)
同一树枝使用数组标记元素是否已选过,同一树层使用HashSet去重

solution
public class Solution {public List<IList<int>> results = new List<IList<int>>(); public IList<IList<int>> PermuteUnique(int[] nums) {List<int> result = new List<int>();int[] mark = new int[nums.Length];permuteTraversal(nums, mark, result);return results;}public void permuteTraversal(int[] nums, int[] mark, List<int> result){if(result.Count == nums.Length){results.Add(new List<int>(result));return;}HashSet<int> layer = new HashSet<int>();for(int i = 0; i < nums.Length; i ++){if(mark[i] == 0){if(layer.Add(nums[i])){mark[i] = 1;result.Add(nums[i]);permuteTraversal(nums, mark, result);result.RemoveAt(result.Count - 1);mark[i] = 0;}}}}
}
summary

332. 重新安排行程

题目:332. 重新安排行程 - 力扣(LeetCode)
题解:代码随想录 (programmercarl.com)

solution
summary

51. N皇后

题目:51. N 皇后 - 力扣(LeetCode)
题解:代码随想录 (programmercarl.com)

solution
using System;
using System.Collections.Generic;
using System.Text;public class Solution {public List<IList<string>> results = new List<IList<string>>();public IList<IList<string>> SolveNQueens(int n) {List<StringBuilder> result = new List<StringBuilder>();for (int i = 0; i < n; i++) {StringBuilder row = new StringBuilder(new string('.', n));result.Add(row);}queensTraversal(result, 0, n, new bool[n], new bool[2 * n], new bool[2 * n]);return results;}public void queensTraversal(List<StringBuilder> sbs, int row, int n, bool[] cols, bool[] d1, bool[] d2) {// 可以加入结果集的情况if (row == n) {List<string> Result = new List<string>();foreach (StringBuilder sb in sbs) {Result.Add(sb.ToString());}results.Add(Result);return;}for (int col = 0; col < n; col++) {int id1 = col - row + n;int id2 = col + row;if (!cols[col] && !d1[id1] && !d2[id2]) {sbs[row][col] = 'Q';cols[col] = d1[id1] = d2[id2] = true;// 递归queensTraversal(sbs, row + 1, n, cols, d1, d2);// 回溯sbs[row][col] = '.';cols[col] = d1[id1] = d2[id2] = false;}}}
}
summary

错误:

1、理解错题意:
皇后不能互相攻击的限制:不能同行/同列/同斜线。指的是当前棋盘上所有皇后,而不是上下两行。。。
判断当前棋盘是否有效的条件

2、StringBuilder列表初始写法
错误写法如下:

List<StringBuilder> result = new List<StringBuilder>(n);
for(int i = 0; i < n; i ++)
{result[i] = new StringBuilder(n);for(int j = 0; j < n; j ++){result[i][j] = '.';}
}

37. 解数独

题目:37. 解数独 - 力扣(LeetCode)
题解:代码随想录 (programmercarl.com)

solution
public class Solution {public void SolveSudoku(char[][] board) {Solve(board);}private bool Solve(char[][] board) {for (int row = 0; row < 9; row++) {for (int col = 0; col < 9; col++) {if (board[row][col] == '.') {for (char num = '1'; num <= '9'; num++) {if (IsValid(board, row, col, num)) {board[row][col] = num;if (Solve(board)) {return true;}board[row][col] = '.';}}return false;}}}return true;}private bool IsValid(char[][] board, int row, int col, char num) {for (int i = 0; i < 9; i++) {if (board[row][i] == num || board[i][col] == num || board[row / 3 * 3 + i / 3][col / 3 * 3 + i % 3] == num) {return false;}}return true;}
}
summary

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

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

相关文章

力扣224【基本计算器】

给你一个字符串表达式 s &#xff0c;请你实现一个基本计算器来计算并返回它的值。 注意:不允许使用任何将字符串作为数学表达式计算的内置函数&#xff0c;比如 eval() 。 1 < s.length < 3 * 105 s 由数字、‘’、‘-’、‘(’、‘)’、和 ’ ’ 组成 s 表示一个有效的…

02、爬虫数据解析-Re解析

数据解析的目的是不拿到页面的全部内容&#xff0c;只拿到部分我们想要的内容内容。 Re解析就是正则解析&#xff0c;效率高准确性高。学习本节内容前需要学会基础的正则表达式。 一、正则匹配规则 1、常用元字符 . 匹配除换行符以外的字符 \w 匹配字母或数字或下划…

基于Python的房产数据分析系统的设计与实现(源码+lw+部署文档+讲解等)

文章目录&#xff1a; 目录 详细视频演示 设计文档详细参考 技术开发的参考技术栈&#xff01; 2.1 Python语言 2.2 Django框架 2.3 MySQL 2.4 Hadoop介绍 2.5 Scrapy介绍 4.2 系统结构设计 4.3 数据库设计 界面设计与功能实现 5.1系统登录注册实现 5.2管理员模块…

【请求代理】springboot单机服务基于过滤器Filter实现第三方服务器接口请求代理功能

springboot单机服务基于过滤器Filter实现第三方服务器接口请求代理功能 一、前言二、解决思路三、基于gateway实现四、基于过滤器Filter实现五、问题总结 **注&#xff1a;本文源码获取或者更多资料&#xff0c;关注公众号&#xff1a;技术闲人**一、前言 在项目开发时会遇到w…

基于yolov8的口罩检测模型

项目介绍 本项目基于yolov8对图像进行训练&#xff0c;可以检测戴口罩的人与没有带口罩的人的图片和视频&#xff0c;除此之外&#xff0c;还提供了数据分析界面&#xff0c;支持检测过的信息转化为excel&#xff0c;信息可视化等功能 配置过程 软件开发环境:python3.9 系统…

前端开发:HTML与CSS

文章目录 前言1.1、CS架构和BS架构1.2、网页构成 HTML1.web开发1.1、最简单的web应用程序1.2、HTTP协议1.2.1 、简介1.2.2、 http协议特性1.3.3、http请求协议与响应协议 2.HTML概述3.HTML标准结构4.标签的语法5.基本标签6.超链接标签6.1、超链接基本使用6.2、锚点 7.img标签8.…

Apollo:实时通信架构CyberRT入门, my writer

1. 简介 1.1 从 ROS 系统说起 Apollo 最初用的中间件是 ROS(机器人操作系统),在 v3.0 之前用的都是基于 ROS 框架进行开发。概括来说,ROS 系统主要包含三方面: 第一是通信系统,ROS 是个分布式的松耦合系统,算法模块是以独立的进程形式存在的,也就是我们常说的 Node。R…

单击和一些案例

一、单击 1、单击概念 除了定位鼠标之外&#xff0c;processing鼠标还捕捉鼠标是否被单击。mousePressed在鼠标单击和不单击的情况下有不同的值。mousePressed变量是一种bool变量&#xff0c;也就是说它只有两个可能的值&#xff0c;真和假。当鼠标按下的时候mousePressed的值…

C# 插入排序

栏目总目录 概念 插入排序&#xff08;Insertion Sort&#xff09;是一种简单直观的排序算法。它的工作原理是通过构建有序序列&#xff0c;对于未排序数据&#xff0c;在已排序序列中从后向前扫描&#xff0c;找到相应位置并插入。插入排序在实现上&#xff0c;通常采用in-pl…

apache2和httpd web服务器

apache2和httpd web服务器 apache2和httpd web服务器是啥apache是软件基金会apache2是一个web服务httpd和apache2是同一个东西&#xff0c;但是不同linux发行版中叫法不一样。就是同一个东西&#xff0c;但是看上去有一些不一样。 apache2和httpd web服务器是啥 apache是软件基…

Scikit-learn内置的数据集

数据集是我们学习和研究机器学习不可或缺的基础&#xff0c;Scikit-learn库内置了丰富的数据集资源&#xff0c;非常适合初学者用来练习和验证机器学习算法的效果。 一、鸢尾花数据集 鸢尾花数据集&#xff08;Iris Dataset&#xff09;是机器学习领域中最著名的数据集之一&am…

在occluded Person Re-ID中,选择clip还是ViT作为backbone?

在遮挡行人再识别&#xff08;Occluded Person Re-Identification, Occluded Person Re-ID&#xff09;任务中&#xff0c;使用CLIP&#xff08;Contrastive Language-Image Pre-Training&#xff09;作为backbone和使用Vision Transformer&#xff08;ViT&#xff09;作为back…

【每日一篇】使用图神经网络进行交通速度预测的上下文感知知识图谱框架【为了自己方便读论文】

Context-aware knowledge graph framework for traffic speed forecasting using graph neural network 论文链接&#xff1a; https://arxiv.org/abs/2407.17703 翻译&#xff1a; 摘要 人类流动在空间和时间上受到城市环境的密切影响&#xff0c;构成了理解交通系统的重…

C语言 合并两个链表并按学号升序排列

已有a,b两个链表,每个链表中的结点包括学号、成绩。要求把两个链表合并,按学号升序排列。 #include <stdio.h> #include <stdlib.h>typedef struct Node {long num;float score;struct Node* next; } Node;Node* creat() {Node *head = NULL, *p1, *p2;p1 = p2 = …

MarkTool之UDP

UDP客户端&#xff0c;主要作用是与UDP服务端连接进行数据通讯 1、连接参数有4个&#xff0c;绑定IP和Port&#xff0c;服务端IP和Port 2、接收数据和发送数据的参数设置&#xff0c;有16进制&#xff0c;有字符&#xff0c;有原始数据&#xff0c;都可进行选择 3、定时发送&a…

理解常见开源协议的区别

本文将介绍几种常见的开源许可证&#xff0c;包括GPL、LGPL、MIT、Apache、BSD 和 木兰协议&#xff08;Mulan PSL&#xff09;&#xff0c;并详细解释它们的区别。 1. GPL (GNU General Public License) GPL 是最著名和最常用的开源许可证之一&#xff0c;由自由软件基金会 …

module federation模块联邦与微前端

module federation是什么 webpack5新增了module federation&#xff0c;module federation的作用&#xff0c;将每个构建(build)作为容器(这是一个概念)&#xff0c;构建后的资源可以正常部署&#xff0c;同时还具备在运行时对外暴露其中的模块&#xff0c;这就意味着多个构建…

泰安网站建设有几大特点

泰安网站建设的特点可以分为以下几个方面&#xff1a; 一、突出地域特色。泰安是山东省的一个地级市&#xff0c;具有悠久的历史和深厚的文化底蕴。在网站建设过程中&#xff0c;泰安的特色文化和旅游资源应得到充分的展示。可以通过优美的图片、详细的介绍和生动的文字&#x…

【Python 基础】字典和结构化数据 -1

字典和结构化数据 在本文中,我将介绍字典数据类型,它提供了一种灵活的访问和组织数据的方式。然后,结合字典与关于列表的知识,你将学习如何创建一个数据结构,对井字棋盘建模。 字典数据类型 像列表一样,“字典”是许多值的集合。但不像列表的下标,字典的索引可以使用…

科普文:11个编程原则助你写出优雅代码

糟糕的代码形式可以千千万&#xff0c;优雅且高质量的代码却是极其的相通&#xff0c;如何写出让人信服的高质量代码&#xff1f;编程是一个看似简单&#xff0c;但是还是有很大学问&#xff0c;特别是编写出高质量的优雅代码&#xff0c;最后我们再总结下本文总结的 11种原则&…