leetCode 四叉树和两数求和笔记

Java实现 LeetCode 558 四叉树交集(四叉树,第一次遇到,研究了半天) 558. 四叉树交集 四叉树是一种树数据,其中每个结点恰好有四个子结点:topLeft、topRight、bottomLeft 和 bottomRight。四叉树通常被用来划分一个二维空间,递归地将其细分为四个象限或区域。 我们希望在四叉树中存储 True/False 信息。四叉树用来表示 N * N 的布尔网格。对于每个结点, 它将被等分成四个孩子结点直到这个区域内的值都是相同的。每个节点都有另... 阅读详情

 

四叉树考察了递归,我一直对递归的思想不是特别理解,最后还是看了其他人的题解才写出来。

具体是每次都比较两个四叉树的相同节点,

①如果两个都是叶子节点,且其中有一个的val为true;则返回该节点。若都是叶节点,但是其中一个是false,则返回另一个节点。

②如果两个节点都不是叶节点,则依次比较它们的相同位置节点;此处就是递归的地方,

③递归的终点是四个节点的返回都是叶节点并且它们的val相等,则返回其中一个val,合并为一个节点。 否则,必然不是只有一个节点,isLeaf=false,val自然也是false,四个对应的叶节点就是对应返回的叶节点。

class Solution {
    public Node intersect(Node quadTree1, Node quadTree2) {
        if(quadTree1.isLeaf && quadTree1.val) return quadTree1;
		if(quadTree2.isLeaf && quadTree2.val) return quadTree2;
		if(quadTree1.isLeaf && !quadTree1.val) return quadTree2;
		if(quadTree2.isLeaf && !quadTree2.val) return quadTree1;
		
		Node n1 = intersect(quadTree1.topLeft, quadTree2.topLeft);
		Node n2 = intersect(quadTree1.topRight, quadTree2.topRight);
		Node n3 = intersect(quadTree1.bottomLeft, quadTree2.bottomLeft);
		Node n4 = intersect(quadTree1.bottomRight, quadTree2.bottomRight);
		
		if(n1.val == n2.val && n1.val==n3.val && n1.val==n4.val && n1.isLeaf &&n2.isLeaf && n3.isLeaf && n4.isLeaf)
			 return new Node(n1.val, true, null, null, null, null);
		else
			return new Node(false, false, n1,n2,n3,n4);
    }
}

 

 

二,两数相加

这道题是中等难度,乍一看还比较简单,我感觉比上一道简单一点,写倒是写出来了,就是有些小bug,而且不够优化,改了改就改的不成样子了,,,

最后参考了题解,是真的简洁。

ListNode ree = new ListNode(0);
		  ListNode re = ree;
		
		  int index = 0;//进位
		  while(l1!=null || l2!=null)
		  {
			  int a = (l1!=null) ? l1.val : 0;
			  int b = (l2!=null) ? l2.val : 0;
			  int sum = a+b+index;
			  index = sum/10;
			  re.next = new ListNode(sum%10);
			  re = re.next;
             
			  if(l1!=null)	l1 = l1.next;
  			  if(l2!=null)	l2 = l2.next;
		  }
		  if(index>0)
			  re.next = new ListNode(index);
		  return ree.next;

这里先设置返回了两个ListNode,其中一个用来返回,这里我没想到。 还有一个是在相加的时候,re的next节点的设置,要先初始化节点在re=re.next. 是我的语言问题。

LeetCode 0427「建立四叉树」 文章目录 题目 给你一个 n * n 矩阵 grid,矩阵由若干 0 和 1 组成。请你用四叉树表示该矩阵 grid。 你需要返回能表示矩阵的四叉树的根结点。 注意,当 isLeaf 为 False 时,你可以把 True 或者 False 赋值给节点,两种值都会被判题机制 接受 。四叉树数据结构中,每个内部节点只有四个子节点。此外,每个节点都有两个属性: val:储存叶子结点所代表的区域的值。1 对应 True,0 对应 False; isLeaf: 当这个节点是一个叶子结点时为 Tr... 阅读详情

相关推荐

四叉树Demo

Unity下的 四叉树Demo, 参考 https://github.com/CodingTrain/QuadTree

C语言实现一个四叉树quadtree

C语言实现一个四叉树quadtreecheungmine 用C语言实现一个2维四叉树quadtree,具有一定的实际意义。你可以把几何图形的索引(用long型的id标识)放到这个树中(根据最小边界矩形)。quadtree可以用来快速区域查找图形,虽然不是那么精确,但是毕竟没有漏掉的。虽然quadtree的效率不如RTree?但是RTree的实现毕竟复杂了些,我会尽快收集整理出RTree的代

恒 1万+

Shader之——花草动画shader

今天 ,接到了个需求,花草的动画。谈到花草动画,立马就想到顶点动画,让顶点动起来就可以实现了。但是有个问题,所有的草都往一个方向运动,这个就麻烦了。因为在shader里没有随机这种概念,提到最多的是用一张噪声图来模拟。在网上搜索了一下,发现有更好的办法,就是用每个顶点到一个点的距离来控制动画的开始,毕竟每个顶点到同一个点的距离很少是一样的。 float dis = distance ...

baicaishisan的博客 2183

四叉树碰撞代码

原来是视锥碰撞四叉树,经过一周开发变成碰撞检测四叉树可视化。

a1309602336的博客 449

R 绘制环形树状图

按大类小类的从属关系绘制环形图,并把不同值的节点设置为相应大小。要求同一类的节点应为同一颜色。 按照输入,处理代码和输出记录

weixin_43718786的博客 1872

无人机飞控算法开发实战:从零到一构建企业级飞控系统

本文系统介绍了无人机飞控算法开发的完整流程,包括飞行动力学模型建立、传感器校准与数据融合、主流控制算法实现(PID、ADRC、EKF)以及企业级飞控系统架构设计。通过结合开源飞控框架(如PX4)和实际工程经验,提供了完整的代码实现示例,帮助学者从零开始掌握无人机飞控开发的核心技术。文中详细讲解了四旋翼无人机的动力学模型、传感器校准方法、EKF状态估计算法、PID和ADRC控制算法的实现,以及MAVLink通信协议的集成。最后,总结了完整的飞控系统开发流程和未来发展趋势。

全栈 3401

四叉树

1 #include <cmath> 2 #include <vector> 3 #include <iostream> 4 #include <algorithm> 5 6 using namespace std; 7 8 const int NUME_PLANETS = 10;//星球数量 ...

weixin_34235457的博客 350

LBS之五:时空索引--空间邻域搜索的高效实践

时空索引的原理及最佳实践

whascj的博客 1364

Creating a Quadtree(四叉树)

四叉树

m0_63851154的博客 324

ENVI与Sarscape协同处理哨兵一号数据的完整流程解析

本文详细解析了利用ENVI与Sarscape软件协同处理哨兵一号(Sentinel-1)SAR数据的完整工作流程。从环境搭建、数据导入与裁剪,到核心的DEM辅助多时相配准、斑点噪声滤波,再到最终的地理编码与辐射定标,提供了标准化的操作指南与实用技巧,帮助用户高效地将原始雷达数据转化为可用于分析的地理编码产品。

weixin_29251131的博客 339

【Out-of-Distribution Detection】Evidential Deep Learning in NeurIPS 2018 个人理解

核心思想是将分类器的概率输出视为一个狄利克雷分布(Dirichlet Distribution)并替换,之后引入两个损失分别负责保证预测结果准确性和提升被错误分类的样本的不确定性。

研究兴趣:开放集识别、开放世界识别、新类发现、增量学习、少样本学习 2434

Java实现 LeetCode 427 建立四叉树

427. 建立四叉树 我们想要使用一棵四叉树来储存一个 N x N 的布尔值网络。网络中每一格的值只会是真或假。树的根结点代表整个网络。对于每个结点, 它将被分等成四个孩子结点直到这个区域内的值都是相同的. 每个结点还有另外两个布尔变量: isLeaf 和 val。isLeaf 当这个节点是一个叶子结点时为真。val 变量储存叶子结点所代表的区域的值。 你的任务是使用一个四叉树表示给定的网络。下面...

南 墙 1万+

基于STM32H5的循环GPDMA链表使用

STM32H503的GPDMA链表模式可实现灵活的数据传输。相比传统DMA直接编程方式,链表模式通过配置多个节点实现分散数据传输,支持循环链表功能。示例展示了如何使用GPDMA链表实现UART1循环发送数据:配置两个DMA节点分别指向不同发送缓冲区,构建循环链表并绑定到DMA通道。关键点包括:清空链表结构体、正确设置循环模式、检查节点配置。此方法提高了DMA使用的灵活性,适用于需要交替传输多段数据的场景。

kevin1499的博客 451

LeetCode每日一题(13)——建立四叉树(递归)

建立四叉树1.题目2.示例3.思路 1.题目 给你一个 n * n 矩阵 grid ,矩阵由若干 0 和 1 组成。请你用四叉树表示该矩阵 grid 。 你需要返回能表示矩阵的 四叉树 的根结点。 注意,当 isLeaf 为 False 时,你可以把 True 或者 False 赋值给节点,两种值都会被判题机制 接受 。 四叉树数据结构中,每个内部节点只有四个子节点。此外,每个节点都有两个属性: val:储存叶子结点所代表的区域的值。1 对应 True,0 对应 False; isLeaf: 当这个节点是一

weixin_52001449的博客 3384

ubuntu-25.04-desktop-amd64 工具VMware-tools 正确安装方法

摘要:Ubuntu 25.04虚拟机安装VMware Tools后无法实现主机与虚拟机间的文件复制粘贴和拖拽功能,问题可能源于工具兼容性。建议优先安装open-vm-tools套件(含open-vm-tools-desktop),而非官方VMware Tools。具体方案:通过终端执行安装命令后重启系统。该方法已实测有效解决该兼容性问题。(149字)

安徽锐锋科技-沐雨潇竹 672

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

Leetcode 427. 建立四叉树 C++

Leetcode 427. 建立四叉树 题目 给你一个 n * n 矩阵 grid ,矩阵由若干 0 和 1 组成。请你用四叉树表示该矩阵 grid 。 你需要返回能表示矩阵的 四叉树 的根结点。 注意,当 isLeaf 为 False 时,你可以把 True 或者 False 赋值给节点,两种值都会被判题机制 接受 。 四叉树数据结构中,每个内部节点只有四个子节点。此外,每个节点都有两个属性: val:储存叶子结点所代表的区域的值。1 对应 True,0 对应 False; isLeaf: 当这个

weixin_43750513的博客 775

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

Leetcode【建立起四叉树】

topRight 具有不同的值,因此我们将其再分为 4 个子网格,这样每个子网格都具有相同的值。topLeft,bottomLeft 和 bottomRight 均具有相同的值。四叉树数据结构中,每个内部节点只有四个子节点。请注意,在下面四叉树的图示中,0 表示 false,1 表示 True。网格中的所有值都不相同。如果你想了解更多关于四叉树的内容,可以参考。的值为 True ,则表示它在列表。表示路径终止符,其下面不存在节点。的值为 False ,则表示值为。的 四叉树 的根结点。

摸鱼的快乐你不懂 1084

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

LeetCode 558. 四叉树交集(递归)

1. 题目 四叉树是一种树数据,其中每个结点恰好有四个子结点:topLeft、topRight、bottomLeft 和 bottomRight。四叉树通常被用来划分一个二维空间,递归地将其细分为四个象限或区域。 我们希望在四叉树中存储 True/False 信息。四叉树用来表示 N * N 的布尔网格。对于每个结点, 它将被等分成四个孩子结点直到这个区域内的值都是相同的。每个节点都有另外两个布尔...

Michael是个半路程序员 1105

LeetCode 427. 建立四叉树(递归)

1. 题目 我们想要使用一棵四叉树来储存一个 N x N 的布尔值网络。网络中每一格的值只会是真或假。树的根结点代表整个网络。对于每个结点, 它将被分等成四个孩子结点直到这个区域内的值都是相同的. 每个结点还有另外两个布尔变量: isLeaf 和 val。isLeaf 当这个节点是一个叶子结点时为真。val 变量储存叶子结点所代表的区域的值。 你的任务是使用一个四叉树表示给定的网络。下面的例子将有...

Michael是个半路程序员 1466

Leetcode 427. 建立四叉树

Leetcode 427. 建立四叉树

fucheng的博客 657

LeetCode 四叉树交集

四叉树是一种树数据,其中每个结点恰好有四个子结点:topLeft、topRight、bottomLeft 和 bottomRight。四叉树通常被用来划分一个二维空间,递归地将其细分为四个象限或区域。 我们希望在四叉树中存储 True/False 信息。四叉树用来表示 N * N 的布尔网格。对于每个结点, 它将被等分成四个孩子结点直到这个区域内的值都是相同的。每个节点都有另外两个布尔属性:isL...

hestyle的博客 595

四叉树的建立LeetCode

LeetCode 427 要求我们把一个 仅含 0/1 的 n×n 矩阵(n 为 2 的幂)用「四叉树」压缩表示,返回根节点。3. 数组越界 → 保证 `r+len<=n` 且 `c+len<=n`,题目 n 为 2 的幂可放心二分。时间 O(n² log n) 每层递归都要 O(n²) 扫描,共 log n 层。最优叶子数 O(1) 全 0 或全 1 时只有 1 个叶子。- 前缀和/哈希 把「是否全等」查询降到 O(1),总时间 O(n²)。

2401_89012560的博客 275
上一篇: 547. Friend Circles (java)
下一篇: 524. Longest Word in Dictionary through Deleting
monkey1008611
博客等级 码龄10年 14粉丝 48原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值