LeetCode 430. 扁平化多级双向链表(DFS)

1. 题目

您将获得一个双向链表,除了下一个和前一个指针之外,它还有一个子指针,可能指向单独的双向链表。这些子列表可能有一个或多个自己的子项,依此类推,生成多级数据结构,如下面的示例所示。

扁平化列表,使所有结点出现在单级双链表中。您将获得列表第一级的头部。
在这里插入图片描述

输入:1---2---3---4---5---6--NULL|7---8---9---10--NULL|11--12--NULL输出:
1-2-3-7-8-11-12-9-10-4-5-6-NULL

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/flatten-a-multilevel-doubly-linked-list
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

2. DFS

class Solution {
public:Node* flatten(Node* head) {Node *cur = head, *nextNode = NULL, *prevN = head;//所有的指针记得初始化,不要以为后面要付值就不要初始值,怕后面if没进去while(prevN){	//遍历链表if(cur && cur->child) //当前有,且有子链{nextNode = cur->next;//记住上层cur后面的cur->next = flatten(cur->child);//展平cur->child->prev = cur;//子链头接上,展平cur->child = NULL;//将cur孩子删掉}prevN = cur;//prevnode移动if(cur)cur = cur->next;//cur移动if(!cur && nextNode){	//当cur到终点的下一个时,且上层后面还有nextnodeprevN->next = nextNode;//展平的终点prevN指向上层的nextnodenextNode->prev = prevN;//反向接上cur = prevN->next;//cur移动nextNode = NULL;//已接好,暂时没有child的需要展平,nextNode清空}}return head;}
};

在这里插入图片描述

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

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

相关文章

详解:多模态知识图谱种类及其应用

详解:多模态知识图谱种类及其应用 本文系统的讲述了一些关于多模态知识图谱的相关知识,作者介绍了一些重要的开源多模态知识图谱,基于百科多模态知识图谱Richpedia以及相关使用网站和多模态知识图谱的应用。>>加入极市CV技术交流群&am…

Android Hook技术防范漫谈

背景 当下,数据就像水、电、空气一样无处不在,说它是“21世纪的生产资料”一点都不夸张,由此带来的是,各行业对于数据的争夺热火朝天。随着互联网和数据的思维深入人心,一些灰色产业悄然兴起,数据贩子、爬虫…

论文浅尝 - ICML2020 | 跨域对齐的图最优运输算法

陈卓,浙江大学在读博士,主要研究方向为图神经网络和知识图谱表示学习。论文链接:https://arxiv.org/pdf/2006.14744代码:https://github.com/LiqunChen0606/Graph-Optimal-Transport发表会议:ICML 2020动机该论文的出发…

张俊林:对比学习研究进展精要

文 | 张俊林知乎对比学习(Contrastive Learning)最近一年比较火,各路大神比如Hinton、Yann LeCun、Kaiming He及一流研究机构比如Facebook、Google、DeepMind,都投入其中并快速提出各种改进模型:Moco系列、SimCLR系列、BYOL、SwAV…..&#x…

前端开发者的福音!通过拖拽就可生成Vue代码的平台来了!

Vue组件代码生成平台 Vue组件代码生成平台是一款面向Vue开发者的拖拽式组件代码生成工具。通过它可以快速搭建Vue组件的代码骨架结构。开发者可在此基础上进行二次开发。 目前该平台非常适合快速搭建一个常见的数据查询组件,仅需要拖三个组件进来即可完成&#xf…

LeetCode 523. 连续的子数组和(求余 哈希)

1. 题目 给定一个包含非负数的数组和一个目标整数 k,编写一个函数来判断该数组是否含有连续的子数组,其大小至少为 2,总和为 k 的倍数,即总和为 n*k,其中 n 也是一个整数。 示例 1: 输入: [23,2,4,6,7], k 6 输出: …

知识图谱简介

01 什么是知识图谱 我们可以从不同的视角去审视知识图谱的概念。 在Web视角下,知识图谱如同简单文本之间的超链接一样,通过建立数据之间的语义链接,支持语义搜索。 在自然语言处理视角下,知识图谱就是从文本中抽取语义和结构化的…

流量运营数据产品最佳实践——美团旅行流量罗盘

背景 互联网进入“下半场”后,美团点评作为全球最大的生活服务平台,拥有海量的活跃用户,这对技术来说,是一个巨大的宝藏。此时,我们需要一个利器,来最大程度发挥这份流量巨矿的价值,为酒旅的业务…

开源开放 | OMAHA 联合 OpenKG 发布新冠诊疗图谱数据

本文转载在公众号:OMAHA联盟。今年新型冠状病毒肺炎爆发期间,大数据、云计算、人工智能等新一代信息技术支撑着我国建立和健全疫情防控机制。知识图谱作为机器认知智能实现的基础之一,是人工智能的重要组成部分,在“抗疫”行动中赋…

LeetCode 498. 对角线遍历

1. 题目 给定一个含有 M x N 个元素的矩阵(M 行,N 列),请以对角线遍历的顺序返回这个矩阵中的所有元素,对角线遍历如下图所示。 输入: [[ 1, 2, 3 ],[ 4, 5, 6 ],[ 7, 8, 9 ] ]输出: [1,2,4,7,5,3,6,8,9]2. 解题 横…

图灵奖得主Jeff Ullman:机器学习不是数据科学的全部!统计学也不是!

文 | Jeff Ullman源 | 智源社区3月31日,2020年图灵奖重磅出炉,颁给了哥伦比亚大学计算机科学名誉教授 Alfred Vaino Aho 和斯坦福大学计算机科学名誉教授 Jeffrey David Ullman。Jeff Ullman 是数据科学领域的巨擘,他的研究兴趣包括数据库理论…

深度学习及AR在移动端打车场景下的应用

本文内容根据作者在美团Hackathon 4.0中自研的项目实践总结而成。作为美团技术团队的传统节目,每年两次的Hackathon已经举办多年,产出很多富于创意的产品和专利,成为工程师文化的重要组成部分。本文就是2017年冬季Hackathon 4.0一个获奖项目的…

开源开放 | 熵简科技 AI Lab 开源金融领域中文预训练语言模型 FinBERT

1 背景及下载地址为了促进自然语言处理技术在金融科技领域的应用和发展,熵简科技 AI Lab 近期开源了基于 BERT 架构的金融领域预训练语言模型 FinBERT 1.0。相对于Google发布的原生中文BERT、哈工大讯飞实验室开源的BERT-wwm 以及 RoBERTa-wwm-ext 等模型&#xff0…

前端如何做极致的首屏渲染速度优化

这里说的极致是技术上可以达到最优的性能。 这里不讨论常见的优化手段,比如:Script标签放到底部、DNS预解析、HTTP2.0、CDN、资源压缩、懒加载等。 这里讨论的是如何使First Contentful Paint的时间降到最低,这个指标决定了白屏的时间有多长…

LeetCode 209. 长度最小的子数组(滑动窗口)

1. 题目 给定一个含有 n 个正整数的数组和一个正整数 s ,找出该数组中满足其和 ≥ s 的长度最小的连续子数组。 如果不存在符合条件的连续子数组,返回 0。 示例: 输入: s 7, nums [2,3,1,2,4,3] 输出: 2 解释: 子数组 [4,3] 是该条件下的长度最小的连…

京东 | NLP人才联合培养计划

01 京东AI项目实战课程安排覆盖了从经典的机器学习、文本处理技术、序列模型、深度学习、预训练模型、知识图谱、图神经网络所有必要的技术。项目一、京东健康智能分诊项目第一周:文本处理与特征工程| Bag of Words模型| 从tf-idf到Word2Vec| SkipGram与CBOW| Hiera…

论文小综 | Pre-training on Graphs

本文转载自公众号:浙大KG。作者:方尹、杨海宏,浙江大学在读博士,主要研究方向为图表示学习。在过去几年中,图表示学习和图神经网络(Graph Neural Network, GNN)已成为分析图结构数据的热门研究领域。图表示学习旨在将具…

初探下一代网络隔离与访问控制

概述 安全域隔离是企业安全里最常见而且最基础的话题之一,目前主要的实现方式是网络隔离(特别重要的也会在物理上实现隔离)。对于很小的公司而言,云上开个VPC就实现了办公网和生产网的基础隔离,但对于有自建的IDC、网络…

LeetCode 189. 旋转数组(环形替换)

1. 题目 给定一个数组,将数组中的元素向右移动 k 个位置,其中 k 是非负数。 示例 1:输入: [1,2,3,4,5,6,7] 和 k 3 输出: [5,6,7,1,2,3,4] 解释: 向右旋转 1 步: [7,1,2,3,4,5,6] 向右旋转 2 步: [6,7,1,2,3,4,5] 向右旋转 3 步: [5,6,7,1,2,3,4]要求…