【LeetCode】每日一题 2023_11_25 二叉树中的伪回文路径(dfs,数组/位运算)
文章目录
- 刷题前唠嗑
- 题目:二叉树中的伪回文路径
- 题目描述
- 代码与解题思路
- 偷看大佬题解
- 结语
刷题前唠嗑

LeetCode?启动!!!
这个月第一次周末早起~
题目:二叉树中的伪回文路径
题目链接:1457. 二叉树中的伪回文路径
题目描述

代码与解题思路
func pseudoPalindromicPaths (root *TreeNode) (ans int) {cnt := make([]int, 10)dfs(root, cnt, &ans)return ans
}func dfs(root *TreeNode, cnt []int, ans *int) {if root == nil {return}cnt[root.Val]++defer func() { cnt[root.Val]-- }()if root.Left == nil && root.Right == nil {if isFalsePalindromes(cnt) {*ans++}return}dfs(root.Left, cnt, ans)dfs(root.Right, cnt, ans)
}func isFalsePalindromes(cnt []int) bool { // 回文串最多只能存在一个奇数个数的值odd := 0for _, v := range cnt {if v%2 == 1 {odd++}}return odd <= 1
}
我做这道题的主要思路就是 dfs 搜索整个二叉树,在搜索的过程中用一个数组记录数字的出现情况,然后在走完一条路之后,判断是否是伪回文串,主要有两个需要注意的地方:
- 如何判断是否是伪回文串?回文串只有两种可能,长度为奇数时,有一个值的个数是奇数,长度为偶数时,每个值的个数都是奇数。也就是只要数组中的值的个数是奇数的数量 <= 1 他就一定是伪回文串啦
- 在使用数组进行计数的时候,当 dfs 回退到上一级的时候,计数需要 --,不然之前的计数会影响新一条路径的计数
偷看大佬题解
func pseudoPalindromicPaths(root *TreeNode) int {return dfs(root, 0)
}func dfs(root *TreeNode, mask int) int {if root == nil {return 0}mask ^= 1 << root.Val // 修改 root.Val 出现次数的奇偶性if root.Left == root.Right { // root 是叶子节点if mask&(mask-1) == 0 {return 1}return 0}return dfs(root.Left, mask) + dfs(root.Right, mask)
}
大佬的题解太妙了,具体思路是这样的:
- 通过 10 个二进制位来表示这个十个数字,如果是值的数量是奇数则为 1,如果是偶数则为 0,这个是异或操作的结果
- 通过 mask&(mask-1),判断数量是奇数个的值有多少个,如果存在 1 个或者 0 个,使用 mask&(mask-1) 操作的结果就会等于 0,具体来说:如果是 mask 全为 0,& 任何数都为零(这就是存在 0 个数量的值是奇数的情况),如果是 mask 有一个位是 1,mask-1 这个操作会让一个 mask 中一个 1 的位置发生改变,也就是如果 mask 只存在一个 1,那使用 mask&(mask-1) 就会等于 0。(这就是存在 1 个数量的值是奇数的情况)
结语
学到了位运算的新用法
相关文章:
【LeetCode】每日一题 2023_11_25 二叉树中的伪回文路径(dfs,数组/位运算)
文章目录 刷题前唠嗑题目:二叉树中的伪回文路径题目描述代码与解题思路偷看大佬题解 结语 刷题前唠嗑 LeetCode?启动!!! 这个月第一次周末早起~ 题目:二叉树中的伪回文路径 题目链接:1457. 二…...
什么是海外私人IP代理?是纯净独享的代理吗?
相信许多互联网工作者都遇到过IP禁令,比如网络抓取项目,使用共享代理服务器向网站发出第一个请求,但却您收到了禁令,这大部分是由于你的共享IP经过多人使用被禁用所致。 那么到底什么是私人代理呢?它们是否适合您的情…...
Vue组件库推荐:Element UI深度解析
在Vue开发中,使用组件库可以极大地提高开发效率,减少重复工作量。Element UI作为一款优秀的Vue组件库,被广泛应用于各类项目中。本文将对Element UI进行深度解析,为开发者提供详细的使用说明和具体的代码示例。 1,Ele…...
Mysql 8.0主从复制模式安装(兼容Mysql 5.7)
Mysql V8.0.35安装 官网地址:MySQL :: Download MySQL Community Server 下载【Mysql 8.0.35】压缩包 解压压缩包,仅保留6个安装文件即可 mysql-community-client-8.0.31-1.el7.x86_64.rpm mysql-community-client-plugins-8.0.31-1.el7.x86_64.rpm my…...
基于Django+Tensorflow卷积神经网络鸟类识别系统
欢迎大家点赞、收藏、关注、评论啦 ,由于篇幅有限,只展示了部分核心代码。 文章目录 一项目简介系统概述系统功能核心技术系统架构系统优势 二、功能三、系统四. 总结 总结 一项目简介 介绍一个基于DjangoTensorflow卷积神经网络鸟类识别系统是一个非…...
史上最全前端知识点+高频面试题合集,十二大专题,命中率高达95%
前言: 下面分享一些关于阿里,美团,深信服等公司的面经,供大家参考一下。大家也可以去收集一些其他的面试题,可以通过面试题来看看自己有哪里不足。也可以了解自己想去的公司会问什么问题,进行有针对的复习。…...
我叫:基数排序【JAVA】
1.自我介绍 基数排序(radix sort)属于“分配式排序” (distribution sort),又称“桶子法” (bucket sort)或bin sort,它是通过键值的各个位的值,将要排序的元素分配至某些“桶”中,是‘桶排序’的扩展 2.基本思想 将所有待比较数值统一为同样的数位长度,数位较短的数…...
ArkUI开发进阶—@Builder函数@BuilderParam装饰器的妙用与场景应用【鸿蒙专栏-05】
ArkUI开发进阶—@Builder函数@BuilderParam装饰器的妙用与场景应用 HarmonyOS,作为一款全场景分布式操作系统,为了推动更广泛的应用开发,采用了一种先进而灵活的编程语言——ArkTS。ArkTS是在TypeScript(TS)的基础上发展而来,为HarmonyOS提供了丰富的应用开发工具,使开…...
智慧城市内涝积水监测仪功能,提升城市预防功能
内涝积水监测仪不仅改变了人们应对城市内涝的老办法,还让智慧城市往前迈了一大步。这个监测仪是怎么做到的呢?就是靠它精准的数据监测和预警,让城市管理有了更科学高效的解决妙招。它就像有了个聪明又负责任的助手,让城市管理更加…...
ISCTF2023 部分wp
学一年了还在入门( web where_is_the_flag ISCTF{41631519-1c64-40f6-8dbb-27877a184e74} 圣杯战争 <?php // highlight_file(__FILE__); // error_reporting(0);class artifact{public $excalibuer;public $arrow;public function __toString(){echo "为Saber选择…...
springboot(ssm毕业生学历证明系统Java(codeLW)
springboot(ssm毕业生学历证明系统Java(code&LW) 开发语言:Java 框架:ssm/springboot vue JDK版本:JDK1.8(或11) 服务器:tomcat 数据库:mysql 5.7(或8.0) 数据…...
分布式锁3: zk实现分布式锁
一 zk 实现分布式锁 1.1 zk分布式操作命令 1.指令: ls / get /zookeeper create /aa "test" delete /aa set /aa "test1" 分布式锁实现原理与最佳实践 2..znode节点类型: 永…...
每日博客Day8
每日博客Day 8 每日算法 206.翻转链表 个人第一次思路: 其实我个人的第一个思路是比较暴力的,我第一遍暴力遍历链表,把链表的所有数值全部都保存到数组里面,然后翻转这个数组,再重复的覆盖当前的这个链表。但是这样…...
Redis-主从与哨兵架构
Jedis使用 Jedis连接代码示例: 1、引入依赖 <dependency><groupId>redis.clients</groupId><artifactId>jedis</artifactId><version>2.9.0</version> </dependency> 2、访问代码 public class JedisSingleTe…...
PTA 7-3 将数组中的数逆序存放
本题要求编写程序,将给定的n个整数存入数组中,将数组中的这n个数逆序存放,再按顺序输出数组中的元素。 输入格式: 输入在第一行中给出一个正整数n(1≤n≤10)。第二行输入n个整数,用空格分开。 输出格式:…...
JavaScript 如何拷贝对像(Object)或者数组(Array)
目录 JavaScript数据拷贝类型 浅拷贝 深拷贝 举例: 浅拷贝 数组 对象 深拷贝 lodash cloneDeep使用示例 自定义深拷贝方法示例 JSON.parse() 和 JSON.stringify()使用示例 JavaScript数据拷贝类型 浅拷贝 数组可以使用Array.prototype.slice()方法 …...
nodejs669在线图书借阅管理系统vue前端
系统的设计与实现主要实现角色有管理员和用户,管理员在后台管理用户模块、用户表模块、图书借阅模块、图书归还模块、图书分类模块、token表模块、收藏表模块、书籍信息模块、图书资讯模块、留言板模块、书籍信息评论表模块、注册用户模块、配置文件模块、处罚记录模块、在线客…...
计算机网络之概述
一、概述 1.1因特网概述 定义 网络(Network)由若干结点(Node)和连接这些结点的链路(Link)组成。多个网络还可以通过路由器互连起来,这样就构成了一个覆盖范围更大的网络,即互联网(或互连网)因此,互联网是“网络的网络…...
git stash save untracked not staged
git stash save untracked not staged 如图 解决方案: git stash save "tag标记信息" --include-untracked或者: git stash save -u "tag标记信息" git stash clear清空本地暂存代码_zhangphil的博客-CSDN博客文章浏览阅读486次。…...
spring-boot集成mybatis-generator
通用 Mapper 在 1.0.0 版本的时候增加了 MyBatis Generator (以下简称 MBG) 插件,使用该插件可以很方便的生成实体类、Mapper 接口以及对应的 XML 文件。 下面介绍了 mybatis-generator 在 spring-boot 中的使用过程 一、引入pom依赖 <dependencies><de…...
SEO_快速诊断并解决网站SEO问题的步骤
SEO问题的快速诊断:为什么你需要这一步 在数字化时代,网站的SEO优化是提升网站流量和品牌知名度的关键。如果网站的SEO问题得不到及时诊断和解决,将会严重影响其在搜索引擎中的排名。这篇文章将带你快速了解如何诊断并解决网站的SEO问题&…...
使用数据库工具进行高效数据查询的 10 大 IntelliJ IDEA 快捷方式
在技术领域,我们常常被那些闪耀的、可见的成果所吸引。今天,这个焦点无疑是大语言模型技术。它们的流畅对话、惊人的创造力,让我们得以一窥未来的轮廓。然而,作为在企业一线构建、部署和维护复杂系统的实践者,我们深知…...
Edge 浏览器:全面解析与深入体验
Edge 浏览器:全面解析与深入体验 引言 随着互联网技术的飞速发展,浏览器已经成为我们日常生活中不可或缺的工具。在众多浏览器中,Edge 浏览器凭借其出色的性能和丰富的功能,赢得了广大用户的青睐。本文将全面解析 Edge 浏览器的特点、功能以及用户体验,帮助您更好地了解…...
编写程序实现钓鱼浮标刻度雕刻,防水不褪色,输出钓友精准看口,实用刚需。
应用到广大钓友最关心的“眼睛”——钓鱼浮标(浮漂)上。我们要解决的是户外垂钓中一个既专业又恼人的问题:浮标刻度的防水与清晰度。项目方案:基于Python的钓鱼浮标激光刻度精密雕刻系统一、 实际应用场景描述想象一下,…...
虚拟机检测工具VMDE深度解析与实战指南
虚拟机检测工具VMDE深度解析与实战指南 【免费下载链接】VMDE Source from VMDE paper, adapted to 2015 项目地址: https://gitcode.com/gh_mirrors/vm/VMDE 揭示VMDE的核心价值 在虚拟化技术广泛应用的今天,准确识别系统运行环境的真实性变得至关重要。虚…...
Linux运维实战:高效文件处理与终端管理技巧
1. 高效处理大文件的技巧1.1 安全删除大文件的方法在生产环境中处理大日志文件时,直接使用rm命令可能会导致系统IO负载过高。我遇到过多次因为删除200GB日志文件导致系统响应缓慢的情况。更安全的做法是:# 首先清空文件内容 > /path/to/file.log # 或…...
nli-distilroberta-base保姆级部署教程:开源DistilRoBERTa NLI服务一键启动
nli-distilroberta-base保姆级部署教程:开源DistilRoBERTa NLI服务一键启动 1. 项目介绍 nli-distilroberta-base是一个基于DistilRoBERTa模型的自然语言推理(NLI)Web服务。它能帮你快速判断两个句子之间的关系,特别适合需要分析文本逻辑关系的场景。 …...
Yii2的$app->handleRequest($request)的本质的庖丁解牛
$app->handleRequest($request) 是 Yii2 框架运行时心脏的每一次搏动。 如果说 new Application() 是**“创世”(构建世界),那么 $app->handleRequest($request) 就是“演化”(处理事件)。 它是整个 MVC 流程的总…...
【LeetCode】队列 栈 | 225.用队列实现栈
题目https://leetcode.cn/problems/implement-stack-using-queues/description/思路 两个队列 利用两个队列倒腾数据,保证一个队列始终为空,用来暂存除"栈顶"外的所有元素。每次push总是往非空队列里加(保证一个队列为空࿰…...
微信小程序解包神器:wxappUnpacker 完整使用指南与源码还原技巧
微信小程序解包神器:wxappUnpacker 完整使用指南与源码还原技巧 【免费下载链接】wxappUnpacker 项目地址: https://gitcode.com/gh_mirrors/wxappu/wxappUnpacker 你是否曾经好奇过微信小程序背后的实现原理?或者想要学习优秀小程序的开发技巧却…...
