Python|每日一练|数组|回溯|栈|树|双指针|单选记录:N 皇后|二叉树的前序遍历|四数之和

news2025/2/28 1:19:25

1、N 皇后(数组,回溯)

皇后问题 研究的是如何将 n 个皇后放置在 n×n 的棋盘上,并且使皇后彼此之间不能相互攻击。

给你一个整数 n ,返回所有不同的 n 皇后问题 的解决方案。

每一种解法包含一个不同的 n 皇后问题 的棋子放置方案,该方案中 'Q'  '.' 分别代表了皇后和空位。

 

示例 1

https://img-service.csdnimg.cn/img_convert/cc74a8b59b9a8fe64bb7a741774c2ad1.jpeg

输入:n = 4
输出:[[".Q..","...Q","Q...","..Q."],["..Q.","Q...","...Q",".Q.."]]
解释:如上图所示,4 皇后问题存在两个不同的解法。

示例 2

输入:n = 1
输出:[["Q"]]

 

提示:

  • 1 <= n <= 9
  • 皇后彼此不能相互攻击,也就是说:任何两个皇后都不能处于同一条横行、纵行或斜线上。

以下程序实现了这一功能,请你填补空白处内容:

class Solution(object):
	def solveNQueens(self, n):
		if n == 0:
			return 0
		res = []
		board = [['.'] * n for t in range(n)]
		self.do_solveNQueens(res, board, n)
		return res
	def do_solveNQueens(self, res, board, num):
		if num == 0:
			res.append([''.join(t) for t in board])
			return
		ls = len(board)
		pos = ls - num
		check = [True] * ls
		for i in range(pos):
			for j in range(ls):
				if board[i][j] == 'Q':
					______________________;
		for j in range(ls):
			if check[j]:
				board[pos][j] = 'Q'
				self.do_solveNQueens(res, board, num - 1)
				board[pos][j] = '.'
if __name__ == '__main__':
	s = Solution()
	print (s.solveNQueens(4))

选项代码:

                        check[j] = False
                        step = pos - i
                        if j + step < ls:
                            check[j + step] = False
                        if j - step >= 0:
                            check[j - step] = False
                        break

2、二叉树的前序遍历(栈,树)

给你二叉树的根节点 root ,返回它节点值的 前序 遍历。

 

示例 1

https://img-service.csdnimg.cn/img_convert/93c03b302d4108b3debe3c473af634ea.jpeg

输入:root = [1,null,2,3] #这里输入应改为Nonepython中没有null

输出:[1,2,3]

示例 2

输入:root = []

输出:[]

示例 3

输入:root = [1]

输出:[1]

示例 4

https://img-service.csdnimg.cn/img_convert/428ab6a3e4c104cf4b41ad1a1a0a6f24.jpeg

输入:root = [1,2]

输出:[1,2]

示例 5

https://img-service.csdnimg.cn/img_convert/67437fd84487294f797443df319c90e9.jpeg

输入:root = [1,null,2]   #这里输入应改为Nonepython中没有null

输出:[1,2]

 

提示:

  • 树中节点数目在范围 [0, 100] 
  • -100 <= Node.val <= 100

 

进阶:递归算法很简单,你可以通过迭代算法完成吗?

选项代码:

class TreeNode:
    def __init__(self, x):
        self.val = x
        self.left = None
        self.right = None


class Solution:
    def __init__(self):
        self.ans = []

    def preorderTraversal(self, root: TreeNode) -> List[int]:
        if not root:
            return []
        self.ans.append(root.val)
        self.preorderTraversal(root.left)
        self.preorderTraversal(root.right)
        return self.ans

3、四数之和(数组,双指针)

给定一个包含 n 个整数的数组 nums 和一个目标值 target,判断 nums 中是否存在四个元素 ab d ,使得 a + b + c + d 的值与 target 相等?找出所有满足条件且不重复的四元组。

注意:答案中不可以包含重复的四元组。

 

示例 1

输入:nums = [1,0,-1,0,-2,2], target = 0
输出:[[-2,-1,1,2],[-2,0,0,2],[-1,0,0,1]]

示例 2

输入:nums = [], target = 0
输出:[]

 

提示:

  • 0 <= nums.length <= 200
  • -109 <= nums[i] <= 109
  • -109 <= target <= 109

请在以下选项中选择

选项代码:

class Solution(object):
    def fourSum(self, nums, target):
        """
        :type nums: List[int]
        :type target: int
        :rtype: List[List[int]]
        """
        nums.sort()
        results = []
        N = len(nums)
        i = 0
        while i < N-3:
            if i > 0 and nums[i] == nums[i-1]:
                i += 1
                continue
            j = i+1
            while j < N-2:
                if j > i+1 and nums[j] == nums[j-1]:
                    j += 1
                    continue
                k = j+1
                l = N-1
                while k < l:
                    if k > j+1 and nums[k] == nums[k-1]:
                        k += 1
                        continue
                    while k < l and (target - nums[i] - nums[j] - nums[k] - nums[l]) < 0:
                        l -= 1
                    if k >= l:
                        break
                    if target == nums[i] + nums[j] + nums[k] + nums[l]:
                        results.append([
                            nums[i],
                            nums[j],
                            nums[k],
                            nums[l]
                        ])
                    k += 1
                j += 1
            i += 1
        return results
# %%
s = Solution()
print(s.fourSum(nums = [1,0,-1,0,-2,2], target = 0))

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

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

相关文章

如何选择靠谱的插画培训课程

如何选择靠谱的插画培训课程&#xff0c;今天教你3个维度选择一个靠谱的插画培训班&#xff01; 插画培训机构课程&#xff1a; 1.选择插画培训班时&#xff0c;要先考察课程&#xff0c;看看课程内容是否符合自己的需求&#xff0c;是否有助于提高插画技术。课程设置应该灵活…

GPT系列详解:初代GPT

本文详细解读了OpenAI公司在2018年6月发布的论文《Improving Language Understanding by Generative Pre-Training》&#xff0c;它其中介绍的算法也就是后来人们说的GPT。本文借鉴了李沐的这个视频&#xff0c;感兴趣的同学可以移步观看大神的讲解。 目录引言GPT方法无监督预训…

拒绝背锅:测试项目中的风险管理一定要知道

测试经理除了要管理产品线的质量保障和日常部门事务工作外&#xff0c;另一项比较重要的就是测试项目全流程的管理。 今天不聊整体的测试项目流程如何开展&#xff0c;而是想聊一聊在同行中比较高频出现的一个字眼&#xff1a;风险管理。 什么是风险管理 引用百度上的解释&a…

OSS上传(Java和Js)

OSS上传&#xff08;Java和Js&#xff09;准备工作创建RAM用户创建角色创建权限策略给角色授予权限策略获取临时访问凭证Java普通上传OSSJava分片上传OSSJS普通上传OSSJS分片上传OSS使用RAM用户或STS方式访问 由于阿里云账号AccessKey拥有所有API访问权限&#xff0c;建议遵循阿…

短视频配音的秘诀!你不会还在傻傻自己人声配音吧?

我们在刷短视频的时候&#xff0c;常常发现这些视频的声音很相似&#xff0c;难道都是同一个作者创作的吗&#xff1f; 其实&#xff0c;这都是他们通过AI智能配音技术&#xff0c;把文本转换为人工智能的声音&#xff0c;而非创作者本人的配音效果。 毕竟真人配音的效率太低…

Elasticsearch_分词器、搜索文档以及原生JAVA操作

文章目录一、ES分词器1、默认分词器2、IK分词器2.1 IK分词器安装及测试2.2 IK分词器词典3、拼音分词器4、自定义分词器二、搜索文档1、添加文档数据2、搜索方式3、ES搜索文档的过滤处理3.1 结果排序3.2 分页查询3.3 高亮查询3.4 SQL查询三、原生JAVA操作ES1、搭建项目2、索引操…

CIMCAl photo container detect is free, container damage detect

飞瞳引擎™小程序直接拍照识别集装箱/API接口二次开发集装箱信息识别/铅封号识别API免费顶尖AI集装箱箱号识别率99.98%以上&#xff0c;高泛化CIMCAIl ENGINE™ photo container detection is free&#xff0c;support API further development or WeChat applet,the recogniti…

Color correction for tone mapping

Abstract色调映射算法提供了复杂的方法&#xff0c;将真实世界的亮度范围映射到输出介质的亮度范围&#xff0c;但它们经常导致颜色外观的变化。在本研究中&#xff0c;我们进行了一系列的主观外观匹配实验&#xff0c;以测量对比度压缩和增强后图像色彩的变化。结果表明&#…

K8S 部署 Redis-Cluster 集群

本文使用 bitnami 镜像部署 redis-cluster 官方文档&#xff1a;https://github.com/bitnami/charts/tree/main/bitnami/redis-cluster 添加 bitnami 仓库 helm repo add bitnami https://charts.bitnami.com/bitnami自定义 values.yaml storageClass&#xff1a;集群的存储…

GBDT(梯度提升树,Gradient Boosting Decision Tree)

GBDT(Gradient Boosting Decision Tree)在数据分析和预测中的效果很好。它是一种基于决策树的集成算法。其中Gradient Boosting 是集成方法boosting中的一种算法&#xff0c;通过梯度下降来对新的学习器进行迭代。而GBDT中采用的就是CART决策树 一、Boosting Boosting指把多个…

一周搞定模拟电路视频教程,拒绝讲PPT,仿真软件配合教学,真正一周搞定

目录1、灵魂拷问2、懦夫救星3、福利领取2、使用流程1、灵魂拷问 问&#xff1a;模拟电路很难吗&#xff1f; 答&#xff1a;嗯&#xff0c;真的很难&#xff01;&#xff01;&#xff01; 问&#xff1a;模拟电路容易学吗&#xff1f; 答&#xff1a;很难学&#xff0c;建议放…

微电影广告具有哪些特点?

微电影广告是广告主投资的&#xff0c;以微电影为形式载体&#xff0c;以新媒体为主要传播载体&#xff0c;综合运用影视创作手法拍摄的集故事性、艺术性和商业性于一体的广告。它凭借精彩的电影语言和强大的明星效应多渠道联动传播&#xff0c;润物细无声地渗透和传递着商品信…

Tomcat介绍

Tomcat介绍 tomcat是一个免费的&#xff0c;开放源代码的Web应用服务器&#xff0c;是Apache软件基金会项目中的一个核心项目&#xff0c;由Apache &#xff0c;Sun和一些公司以及个人共同开发而成&#xff0c;深受Java爱好者的喜爱&#xff0c;是一款比较流行的web应用服务器…

【C++11】可变参数模板(函数模板、类模板)

在C11之前&#xff0c;类模板和函数模板只能含有固定数量的模板参数。C11增强了模板功能&#xff0c;允许模板定义中包含0到任意个模板参数&#xff0c;这就是可变参数模板。可变参数模板的加入使得C11的功能变得更加强大&#xff0c;而由此也带来了许多神奇的用法。 可变参数模…

buu [BJDCTF2020]signin 1

题目描述&#xff1a; 题目分析&#xff1a; 打开发现是16 进制数&#xff08;我也不知道我是怎么发现的&#xff0c;先是尝试了md5和rot-n,发现都不行&#xff0c;然后参考大佬的才知道是16进制&#xff09;使用 在线16进制转字符串 便能得到 flag但我如果不想用线上工具&…

当搭建nginx服务时启动闪退,访问不了服务器

在学习nginx搭建集群服务器时遇到了一些小困难&#xff0c;明明跟着教程视频来操作却启动出问题&#xff0c;闪退&#xff0c;然后访问不了服务器等问题&#xff0c;搞半天搞不清楚&#xff0c;不知道从何下手&#xff1f;当你也遇到这样的情况&#xff0c;或许我这里可以给出一…

网络有线无线配置

一、需求 在无线接入区内&#xff0c;当Lsw1的上联口出现故障时&#xff0c;需要通过AP1-LSw1-LSw2-LSw3的路径访问公网server3。这是因为AP1通过无线网连接到LSw1&#xff0c;而LSw1与LSw3之间的链路出现故障&#xff0c;无法直接访问公网server3。因此&#xff0c;流量需要通…

02-18 周六 图解机器学习之SMV 第五章5-2

02-18 周六 图解机器学习之SMV 第五章5-2时间版本修改人描述2023年2月18日11:47:18V0.1宋全恒新建文档 环境 程序的基本环境&#xff0c;是使用了jupyter&#xff0c;在容器中运行的。 简介 本程序主要演示支持向量的获取&#xff0c;支持向量是距离超平面最近的点组成的。程序…

django+celery+ RabbitMQ自定义多个消息队列

关于django celery的使用网上有很多文章&#xff0c;本文就不多做更多的说明。 本文使用版本 python3.8.15 Django3.2.4 celery5.2.7celery.py from __future__ import absolute_import, unicode_literals import os from celery import Celery from kombu import Exchange, …

XC7K70T-1FBG484C, XC7A50T-1CSG324I FPGA,Kintex-7 285 I/O

说明Kintex-7 FPGA为快速增长应用和无线通信提供最优性价比和低功耗。Kintex-7 FPGA具有卓越的性能和连接性&#xff0c;与前一代相比&#xff0c;优化了最佳性价比&#xff0c;提高了2倍&#xff0c;实现了新一类fpga。Kintex-7内置支持8通道PCI Express (Gen1/Gen2)&#xff…