如何利用数组处理链表
发表于:2025-02-12 作者:千家信息网编辑
千家信息网最后更新 2025年02月12日,如何利用数组处理链表,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。算法:这类题目的一个共同的特点是,转化成数组之后,可以有效的利用数组的
千家信息网最后更新 2025年02月12日如何利用数组处理链表
如何利用数组处理链表,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。
算法:
这类题目的一个共同的特点是,转化成数组之后,可以有效的利用数组的有序性来更方便的解决问题。
核心思想是,先利用数据将树变成有序性,然后统一操作有序数组,进行构建;然后再通过数组进行统一操作就可以。
题目1:
代码实现:
/** * Definition for a binary tree node. * type TreeNode struct { * Val int * Left *TreeNode * Right *TreeNode * } */func flatten(root *TreeNode) { // 1. 将树变成数组,利用数组的有序性 l := preOrder(root) if l == nil { return } // 2. 将有序数组统一构建成一个链式的树结构 for i:=1; i< len(l);i++ { // 这里要注意的是i 从1 开始,因为我们用到了i-1做前缀 pre,cur := l[i-1],l[i] pre.Left = nil pre.Right = cur } return }func preOrder(root *TreeNode) []*TreeNode { if root == nil { return nil } res := []*TreeNode{} res = append(res,root) l := preOrder(root.Left) res = append(res,l...) r := preOrder(root.Right) res = append(res,r...) return res}// 算法:// 核心思想是,先利用数据将树变成有序性,然后统一操作有序数组,进行构建
执行结果:
题目2:
这个题目可以通过数组的有序性来操作,表现虽然没有那么好,不过还是想把这个解法写了下来,用来表明数组的用途。
代码实现:
/**
* Definition for a binary tree node.
* type TreeNode struct {
* Val int
* Left *TreeNode
* Right *TreeNode
* }
*/
func convertBST(root *TreeNode) *TreeNode {
l := midOrder(root)
if l == nil {
return nil
}
sum := 0
for i:=len(l)-1;i>=0;i-- {
l[i].Val += sum
sum = l[i].Val
}
return root
}
func midOrder(root *TreeNode) []*TreeNode {
if root == nil {
return nil
}
res := []*TreeNode{}
l := midOrder(root.Left)
res = append(res,l...)
res = append(res,root)
r := midOrder(root.Right)
res = append(res,r...)
return res
}
执行结果:
看完上述内容,你们掌握如何利用数组处理链表的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注行业资讯频道,感谢各位的阅读!
数组
有序
有序性
题目
统一
问题
处理
代码
内容
思想
数据
方法
更多
核心
算法
结果
有效
束手无策
为此
前缀
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
丽水电脑软件开发流程八个步骤
机房服务器管理制度
下面有几个服务器供应商英文
程序设计属于软件开发
客如云怎么删除数据库
小公司软件开发有本科的吗
会计信息网络技术服务有限公司
虚拟机里的系统能做服务器吗
服务器cpu睿频是什么意思
山东冉宇网络技术有限公司人员
数据库汉字的数据类型是什么
国家网络安全战略的五个目标是
手动运行数据库抽取数据库
民国期刊数据库怎么用
中山税务局数据库整合项目
上海企业软件开发收费报价表
把服务器搞个镜像不关机
oracle 数据库名称
服务器维修方案
数据库建立的好处是什么
深圳市易联网络技术
怎样创建服务器手机版
数据库in嵌套
浦东新区网络营销网络技术备案
移动设备软件开发考试试题
虚拟机 服务器配置
联硕互联网科技有限公司
如何架设web服务器
服务器与系统之间的通信
甘肃物联网时钟同步服务器