力扣107二叉树的层序遍历题目:给你二叉树的根节点root,返回其节点值自底向上的层序遍历。(即按从叶子节点所在层到根节点所在的层,逐层从左向右遍历)示例1:输入:root=[3,9,20,null,null,15,7]输出:[[15,7],[9,20],[3]]示例2:输入:root=[1]输出:[[1]]示例3:输入:root=[]输出:[]提示:树中节点数目在范围[0,2000]内-1000解题思路:首先定义一个队列然后将根节点放入到队列中获取队列的size然后再根据size循环获取到队列的值然后判断该节点有无左子树如果有左子树就先将左子树放入队列然后再将右子树放入队列。具体实现代码如下
力扣107二叉树的层序遍历题目:给你二叉树的根节点root,返回其节点值自底向上的层序遍历。(即按从叶子节点所在层到根节点所在的层,逐层从左向右遍历)示例1:输入:root=[3,9,20,null,null,15,7]输出:[[15,7],[9,20],[3]]示例2:输入:root=[1]输出:[[1]]示例3:输入:root=[]输出:[]提示:树中节点数目在范围[0,2000]内-1000解题思路:首先定义一个队列然后将根节点放入到队列中获取队列的size然后再根据size循环获取到队列的值然后判断该节点有无左子树如果有左子树就先将左子树放入队列然后再将右子树放入队列。具体实现代码如下
力扣023合并k个排序列表题目:给你一个链表数组,每个链表按升序排序。k``lists将所有链接列表合并为一个排序的链接列表并返回它。示例1:Input:lists=[[1,4,5],[1,3,4],[2,6]]Output:[1,1,2,3,4,4,5,6]Explanation:Thelinked-listsare:[1->4->5,1->3->4,2->6]mergingthemintoonesortedlist:1->1->2->3->4->4->5->6示例2:Input:lists=[]Output:[]示例3:Input:lists=[[]]Output:[]约束:k==list
力扣023合并k个排序列表题目:给你一个链表数组,每个链表按升序排序。k``lists将所有链接列表合并为一个排序的链接列表并返回它。示例1:Input:lists=[[1,4,5],[1,3,4],[2,6]]Output:[1,1,2,3,4,4,5,6]Explanation:Thelinked-listsare:[1->4->5,1->3->4,2->6]mergingthemintoonesortedlist:1->1->2->3->4->4->5->6示例2:Input:lists=[]Output:[]示例3:Input:lists=[[]]Output:[]约束:k==list
力扣105根据先序遍历以及中序遍历构建二叉树题目:给定两个整数数组preorder和inorder,其中preorder是二叉树的先序遍历,inorder是同一棵树的中序遍历,请构造二叉树并返回其根节点。示例1:输入:preorder=[3,9,20,15,7],inorder=[9,3,15,20,7]输出:[3,9,20,null,null,15,7]示例2:输入:preorder=[-1],inorder=[-1]输出:[-1]解题思路:先序遍历是“根左右”所以先序遍历数组中的第一个元素肯定是整棵树的根节点,中序遍历是“左根右”所以根节点将左子树的节点元素与右子树的节点元素分隔开来。我们
力扣105根据先序遍历以及中序遍历构建二叉树题目:给定两个整数数组preorder和inorder,其中preorder是二叉树的先序遍历,inorder是同一棵树的中序遍历,请构造二叉树并返回其根节点。示例1:输入:preorder=[3,9,20,15,7],inorder=[9,3,15,20,7]输出:[3,9,20,null,null,15,7]示例2:输入:preorder=[-1],inorder=[-1]输出:[-1]解题思路:先序遍历是“根左右”所以先序遍历数组中的第一个元素肯定是整棵树的根节点,中序遍历是“左根右”所以根节点将左子树的节点元素与右子树的节点元素分隔开来。我们
自己写的就比较暴力,直接两层循环,第一层从0开始,第二层从当前的下一位开始。看了别人的解析好多都是用哈希表实现的,按着别人的解析也写了一个。1functwoSum(nums[]int,targetint)[]int{2temp:=false3z:=04y:=05fori,v:=rangenums{6x:=target-v7fmt.Println("找的数",x)8j:=i+19for{10ifj>=len(nums){11break12}13ifnums[j]==x{14temp=true15y=j16break17}18j++19}20iftemp==true{21z=i22break23}
自己写的就比较暴力,直接两层循环,第一层从0开始,第二层从当前的下一位开始。看了别人的解析好多都是用哈希表实现的,按着别人的解析也写了一个。1functwoSum(nums[]int,targetint)[]int{2temp:=false3z:=04y:=05fori,v:=rangenums{6x:=target-v7fmt.Println("找的数",x)8j:=i+19for{10ifj>=len(nums){11break12}13ifnums[j]==x{14temp=true15y=j16break17}18j++19}20iftemp==true{21z=i22break23}
LC704-二分查找给定一个n个元素有序的(升序)整型数组nums和一个目标值target,写一个函数搜索nums中的target,如果目标值存在返回下标,否则返回-1。示例1:输入:nums=[-1,0,3,5,9,12],target=9输出:4解释:9出现在nums中并且下标为4复制代码示例2:输入:nums=[-1,0,3,5,9,12],target=2输出:-1解释:2不存在nums中因此返回-1复制代码解题思路:设定头尾双指针,设立中间值,拿中间值与目标值进行对比。找到就输出中间值,没有找到就输出-1.代码:varsearch=function(nums,target){
LC704-二分查找给定一个n个元素有序的(升序)整型数组nums和一个目标值target,写一个函数搜索nums中的target,如果目标值存在返回下标,否则返回-1。示例1:输入:nums=[-1,0,3,5,9,12],target=9输出:4解释:9出现在nums中并且下标为4复制代码示例2:输入:nums=[-1,0,3,5,9,12],target=2输出:-1解释:2不存在nums中因此返回-1复制代码解题思路:设定头尾双指针,设立中间值,拿中间值与目标值进行对比。找到就输出中间值,没有找到就输出-1.代码:varsearch=function(nums,target){