力扣总结,深度优先题

news2025/1/22 13:00:48

LCP 67. 装饰树 –链接–
中等
10
相关企业
力扣嘉年华上的 DIY 手工展位准备了一棵缩小版的 二叉 装饰树 root 和灯饰,你需要将灯饰逐一插入装饰树中,要求如下:

完成装饰的二叉树根结点与 root 的根结点值相同
若一个节点拥有父节点,则在该节点和他的父节点之间插入一个灯饰(即插入一个值为 -1 的节点)。具体地:
在一个 父节点 x 与其左子节点 y 之间添加 -1 节点, 节点 -1、节点 y 为各自父节点的左子节点,
在一个 父节点 x 与其右子节点 y 之间添加 -1 节点, 节点 -1、节点 y 为各自父节点的右子节点,
现给定二叉树的根节点 root ,请返回完成装饰后的树的根节点。 示例 1:
在这里插入图片描述

输入: root = [7,5,6]

输出:[7,-1,-1,5,null,null,6]

解释:如下图所示,image.png

示例 2:
在这里插入图片描述

输入: root = [3,1,7,3,8,null,4]

输出:[3,-1,-1,1,null,null,7,-1,-1,null,-1,3,null,null,8,null,4]

解释:如下图所示image.png
该题思路简单,无非是利用递归走一遍树,在两节点之间插入-1,有一点我需要注意的是,递归函数的return 值,(该值可以不用),我们是不可以使用return中途停止递归和函数的执行,返回最初的调用函数的,因此我们也需要辨清此时调用的参数和返回值具体意义

class Solution {
public:
    TreeNode* expandBinaryTree(TreeNode* root) {
        if(root!=nullptr)
        {
            expandBinaryTree(root->left);
            if(root->left!=nullptr)
            {
                TreeNode* T=new TreeNode(-1);
                T->left=root->left;
                root->left=T;
            }
            expandBinaryTree(root->right);
            if(root->right!=nullptr)
            {
                TreeNode *T=new TreeNode(-1);
                T->right=root->right;
                root->right=T;
            }
        }
        return root;
    }
};
  1. 数组嵌套
    中等
    313
    相关企业
    索引从0开始长度为N的数组A,包含0到N - 1的所有整数。找到最大的集合S并返回其大小,其中 S[i] = {A[i], A[A[i]], A[A[A[i]]], … }且遵守以下的规则。

假设选择索引为i的元素A[i]为S的第一个元素,S的下一个元素应该是A[A[i]],之后是A[A[A[i]]]… 以此类推,不断添加直到S出现重复的元素。

示例 1:

输入: A = [5,4,0,3,1,6,2]
输出: 4
解释:
A[0] = 5, A[1] = 4, A[2] = 0, A[3] = 3, A[4] = 1, A[5] = 6, A[6] = 2.

其中一种最长的 S[K]:
S[0] = {A[0], A[5], A[6], A[2]} = {5, 6, 2, 0}
使用染色法,又由题的的*S的下一个元素应该是A[A[i]],之后是A[A[A[i]]]*这不就是提示我们用dfs了吗,哈哈哈哈
思路:
直接对数组进行dfs遍历(for循环),对每一轮遍历设置一个“颜色”,即一个标记,防止重复访问。然后选出遍历次数最多的数组元素
看代码

class Solution {
    int Max,Cnt;
    int hash[200010];
public:
    void dfs(vector<int>&nums,int u,int color)
    {
        if(hash[u]!=-1)
        {
            return ;
        }
        hash[u]=color;
        ++Cnt;
        dfs(nums,nums[u],color);
    }
    int arrayNesting(vector<int>& nums) {
        int i;
        int n=nums.size();
        int color=0;
        Max=0;
        memset(hash,-1,sizeof(hash));
        for(i=0;i<n;++i)
        {
            if(hash[i]==-1)
            {
                Cnt=0;
                dfs(nums,i,++color);
                Max=max(Max,Cnt);
            }
        }
        return Max;
    }
};

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

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

相关文章

用Java开发的建站神器JPress

什么是 JPress &#xff1f; JPress 是一个使用 Java 开发的、类似 WordPress 的产品&#xff0c;支持多站点、多语种自动切换等。&#xff08;JPress 始于2015 年&#xff09; 目前已经有 10w 网站使用 JPress 进行驱动&#xff0c;其中包括多个政府机构&#xff0c;200 上市公…

HashMap 扰动函数、负载因子、扩容链表拆分

文章目录 1.扰动函数2.初始容量3.负载因子4.扩容链表拆分 1.扰动函数 在jdk8中&#xff0c;hashmap有这样一段代码&#xff0c;他叫扰动函数&#xff0c;目的是优化散列效果 static final int hash(Object key) {int h;return (key null) ? 0 : (h key.hashCode()) ^ (h &…

初识Java多线程编程

文章目录 一、线程的状态二、线程的常见属性三、多线程编程Thread类常用构造方法1.继承Thread类2.实现Runnable接口3.匿名内部类实现4.lambda 表达式创建 Runnable 子类对象 四、线程的常见方法 一、线程的状态 //线程的状态是一个枚举类型 Thread.State public class ThreadS…

【C语言】结构体——基础篇

结构体 为什么需要结构体&#xff1f;结构体类型的定义结构体变量结构体变量的定义结构体变量的引用结构体变量的初始化 结构体嵌套 为什么需要结构体&#xff1f; &#x1f4ab;首先&#xff0c;来举一个例子看一下为什么需要结构体。   在学籍管理系统中&#xff0c;要存储…

驱动开发:内核远程堆分配与销毁

在开始学习内核内存读写篇之前&#xff0c;我们先来实现一个简单的内存分配销毁堆的功能&#xff0c;在内核空间内用户依然可以动态的申请与销毁一段可控的堆空间&#xff0c;一般而言内核中提供了ZwAllocateVirtualMemory这个函数用于专门分配虚拟空间&#xff0c;而与之相对应…

MATLAB绘制动画(二)擦除动画

如果我们在绘制图形之后将原有的图形擦除&#xff0c;并重新绘制&#xff0c;看上去就像动画了 示例: t 0; m [sin(t);cos(t)]; p plot(t,m,EraseMode,background,MarkerSize,5); x -1.5*pi; axis([x x2*pi -1.5 1.5]); grid onfor i 1:100t [t 0.1*i];m [m [sin(0.1*i…

【LeetCode: 97. 交错字符串 | 暴力递归=>记忆化搜索=>动态规划 | 位置对应】

&#x1f680; 算法题 &#x1f680; &#x1f332; 算法刷题专栏 | 面试必备算法 | 面试高频算法 &#x1f340; &#x1f332; 越难的东西,越要努力坚持&#xff0c;因为它具有很高的价值&#xff0c;算法就是这样✨ &#x1f332; 作者简介&#xff1a;硕风和炜&#xff0c;…

校园安全,一键报警主机助力保障

校园安全&#xff0c;一键报警主机助力保障 随着社会发展和科技进步&#xff0c;校园安全问题日益受到重视。如何保障师生们的安全成为了学校一项重要任务。而校园可视一键报警主机就是一种非常有效的安保设备。 这种报警主机集合了视频监控、安全防范、数据处理等多个功能&a…

asm 加盘 udev 重启 导致网络异常

Network interface going down when dynamically adding disks to storage using udev in RHEL 6 (Doc ID 1569028.1)正在上传…重新上传取消To Bottom In this Document APPLIES TO: Oracle Database - Enterprise Edition - Version 11.2.0.3 and later Oracle Net Servi…

阿里国际、Lazada、eBay如何提高转化率?测评养号优化方式是什么

转化率是卖家在分析复盘时非常关键的因素&#xff0c;转化率的高低直接影响着卖家目前的关键词listing或者商品描述是否符合&#xff0c;消费者的满意度。 1.调查获客&#xff0c;明确分析市场需求 这是在产品上架之前必须明确的重要环节。如果市场上对于一个产品接受率低&am…

ChatGPT有中文版吗?

2023年最热的技术话题是什么&#xff1f;毫无疑问是人工智能&#xff0c;特别是AIGC领域。其中又以ChatGPT为最热门产品。ChatGPT是一个革命性的人工智能产品&#xff0c;能对我们的生产生活产生巨大的影响。然而&#xff0c;有网友担心ChatGPT是西方开发的AI工具&#xff0c;能…

若依管理系统RuoYi-Vue:登录和鉴权的实现

文章目录 摘要spring-boot-starter-security验证码生成是否开启验证码配置验证码类型CaptchaController的getCode来生成验证码 用户登录SysLoginController的login验证登录是否正确用户名密码是否正确Spring Security 的用户名密码验证机制在SecurityConfig中配置PasswordEncod…

聚观早报|恒大公告许家印成被执行人;特斯拉回应召回超百万辆车

今日要闻&#xff1a;恒大公告&#xff1a;许家印成被执行人&#xff1b;特斯拉回应召回超百万辆车&#xff1b;ChatGPT联网插件下周开放票&#xff1b;天翼物联发布首个3AZ亿级物联网平台&#xff1b;苹果MR头显功能预计远超竞争对手 恒大公告&#xff1a;许家印成被执行人 12…

【沐风老师】3DMAX一键种草插件GrassScatter使用方法详解

GrassScatter for 3dMax一键种草插件使用教程 3DMAX一键种草插件GrassScatter&#xff0c;用于控制草的创建和散布&#xff0c;快速生成草坪&#xff01; 【版本要求】 3dMax2012及更高版本 【安装方法】 方法一&#xff1a;本插件无需安装&#xff0c;使用时直接拖动插件脚…

什么是独享数据库(Database per Microservice)?解决了什么问题?

独享数据库&#xff08;Database per Microservice&#xff09;是一种微服务架构模式&#xff0c;涉及为每个微服务创建单独的数据库。在这种模式下&#xff0c;每个微服务都有自己的数据库&#xff0c;这允许更大的可扩展性、灵活性和自治性。 使用这种模式&#xff0c;每个微…

考考驾照(安卓)

软件安装好后&#xff0c;不用注册登录直接就可以用&#xff0c;软件里主要包含有科目一&#xff0c;科目二&#xff0c;科目三&#xff0c;科目四等等学习的知识内容和一些技巧。 像科目一和科目四有考前须知&#xff0c;考试技巧&#xff0c;和学车流程&#xff0c;还有考试一…

JavaScript学习-DOM事件基础

DOM事件基础 事件监听(绑定)事件监听案例&#xff1a;关闭广告随机点名案例事件监听版本 事件类型类型鼠标经过与鼠标离开轮播图完整版焦点事件键盘事件与文本事件评论字数统计 事件对象获取事件对象事件对象常用属性案例&#xff1a;评论回车发布 环境对象回调函数综合案例&am…

MPLS格式和802.1q帧格式,ISL格式

一.MPLS IETF开发的多协议标记交换&#xff08;MPLS)把第2层的链路状态信息&#xff08;带宽、延迟、利用率等&#xff09;集成到第3层的协议数据单元中&#xff0c;从而简化和改进了第3层分组的交换过程 。理论上&#xff0c;MPLS支持任何第2层和第3层协议。MPLS包头的位置界…

常见电子元器件

目录 常见电子元器件NTC(负温度系数热敏电阻)压敏电阻X2电容(抑制电源电磁干扰用电容器)泄放电阻共模电压共模电感整流桥滤波电容RCD吸收二极管Y电容整流器的原理输出整流肖特基二极管 功率晶体管&#xff08;GTR&#xff0c;三极管)双极型晶体管(BJT&#xff0c;三极管)MOSFET…

Linux安装使用PostgreSQL

安装PostgreSQL 开源数据库&#xff1a;PostgreSQL 在官网选择对应版本的安装包 https://www.postgresql.org/download/ 我的Linux系统是CentOS7 选择对应的系统 选择安装的版本、平台、架构 复制粘贴安装脚本运行 初始化后会创建一个用户postgres&#xff0c;一般开始…