自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(17)
  • 收藏
  • 关注

原创 Java实现LeetCode1382.将二叉搜索树变平衡

的二叉搜索树,新生成的树应该与原来的树有着相同的节点值。如果有多种构造方法,请你返回任意一种。如果一棵二叉搜索树中,每个节点的两棵子树高度差不超过 1 ,我们就称这棵二叉搜索树是。和109题类似,先将二叉树扁平化,再每次取中点作为根节点。给你一棵二叉搜索树,请你返回一棵。有空的时候要仔细看一下证明过程。

2024-01-15 10:20:09 460

原创 Java实现LeetCode1325.删除给定值的叶子节点

注意,一旦删除值为 target 的叶子节点,它的父节点就可能变成叶子节点;如果新叶子节点的值恰好也是 target ,那么这个节点也应该被删除。给你一棵以 root 为根的二叉树和一个整数 target ,请你删除所有值为 target 的。示例中的提示很充分。叶子结点的删除顺序应该是自下而上的,深搜。也就是说,你需要重复此过程直到不能继续删除。

2024-01-15 09:25:33 369

原创 Java实现LeetCode109.有序链表转换二叉搜索树【待优化版】

作为根节点,再对左右中点的左右链表[ left , mid )、[mid.next , right) 进行递归得到左右子树。本代码的不足之处在于先将链表转化为了List,在List中不断地取中点、改变区间,从而导致较大的时间空间开销。在开始写的时候也想到了快慢指针取链表中点,但觉得改变区间后不好判断,就放弃了。对于一个递增链表,要将其转换成高度平衡的二叉树,则需取其中点。给定一个单链表的头节点 head ,其中的元素。,将其转换为高度平衡的二叉搜索树。的左右两个子树的高度差不超过 1。

2024-01-14 11:13:14 382

原创 Java实现LeetCode2583.二叉树中的第K大层和

返回树中第 k 大的层和(不一定不同)。如果树少于 k 层,则返回 -1。如果最终队列的size小于k,说明不足k层返回-1,否则返回队列头部。,如果两个节点与根节点的距离相同,则认为它们在同一层。给你一棵二叉树的根节点 root 和一个正整数 k。先开始看漏了一个字,看成了第K层的和了。第K大层和,可以维护一个优先队列。

2024-01-10 10:29:38 345

原创 Java实现LeetCode2196.根据描述创建二叉树

比较简答的一道模拟题。descriptions[i][0]是父节点,descriptions[i][1]是子节点,description[i][2]指示左子节点或右子节点。看完了题解评论区的大佬,对于description这种命名已经很长的数组,自己的命名可以简洁一些,增强可读性。对description进行遍历,如果不存在父(子)节点,则new一个,否则从HashMap中get。

2024-01-10 07:26:26 360

原创 Java实现LeetCode1609.奇偶数

二叉树根节点所在层下标为 0 ,根的子节点所在层下标为 1 ,根的孙节点所在层下标为 2 ,依此类推。给你二叉树的根节点,如果二叉树为 奇偶树 ,则返回 true ,否则返回 false。偶数下标 层上的所有节点的值都是 奇 整数,从左到右按顺序 严格递增。奇数下标 层上的所有节点的值都是 偶 整数,从左到右按顺序 严格递减。层序遍历,要是生活也像层序遍历一样简单就好了。if else 处可以合并整理一下,但是太困了。

2024-01-09 20:25:23 354

原创 Java实现LeetCode655.输出二叉树

题目描述思路首先,dfs确定树的高度height,根节点的高度为0。其次,按照题干要求new一个List,按照对应行数和列数,逐个赋值为""。最后,递归,root在矩阵中的位置[r,c]确定后,root的左右子节点位置就确定了。自己在写的过程中发现边写边在List中插入新的List< Integer>会出现问题, 从r层递归到r+1层,r+1层存在多个节点,则插入新List可能造成重复。代码class Solution { public List<List<

2024-01-09 10:03:43 392

原创 Java实现LeetCode447.回旋镖的数量

先开始想的是数据结构是Map<Integer,List<int[][]>>,其中key为点之间的距离distance,val结构是list<int[][]>,放具体两点的坐标。是由点 (i, j, k) 表示的元组 ,其中 i 和 j 之间的距离和 i 和 k 之间的欧式距离相等(的点 points ,其中 points[i] = [xi, yi]。显然,val里存在顺序不同的元组对,还需要对val进行循环判断,遂放弃。首先,看到数据量,判断应该可以暴力+模拟,似乎也没有什么别的好方法。

2024-01-08 10:38:32 498

原创 Java实现LeetCode173.二叉搜索树迭代器

方法一:一个直接的思路是在BSTIterator(TreeNode root)初始化函数中,就对二叉搜索树进行一次中序遍历,保留在全局变量list中,每次调用next()或hasNext()转为遍历list。你可以假设 next() 调用总是有效的,也就是说,当调用 next() 时,BST 的中序遍历中至少存在一个下一个数字。注意,指针初始化为一个不存在于 BST 中的数字,所以对 next() 的首次调用将返回 BST 中的最小元素。,而递归本质上是通过栈实现的,所以可以应用栈实现。

2024-01-08 07:37:58 461

原创 Java实现LeetCode103.二叉树的锯齿层序遍历

这题偷懒了,直接查List怎么reverse,但又感觉复杂度高。看了题解发现可以直接利用双端队列的addFirst的方法,需要额外借助一个order判断当前是奇数行还是偶数行。此外,看网友的评论,这种思路本质上还是层序遍历,不过在返回值的设计add上进行了一些正序或倒序的判断。(即先从左往右,再从右往左进行下一层遍历,以此类推,层与层之间交替进行)。给你二叉树的根节点 root ,返回其节点值的。

2024-01-07 20:40:38 390 1

原创 Java实现LeetCode96.不同的二叉搜索树

的节点作为根节点,左右子树的情况相乘,则为该根节点下的所有二叉搜索树种数,即dp[i] = dp[i-1] * dp[n-i]。的节点为根节点时,左子树的值从1到i-1,即左子树有i-1个节点,而右子树的值从i+1到n,即右子树有n-i个节点。下图对n=1、2、3的情况进行了说明,发现n=3时,第1、3类情况来源于n=2,第2类情况来源于n=1。可见,虽然由n=1、2到了n=3,左右子树的值不一样,但n=3左右子树的排列方式来源于n=1、2。因此,对于有n个节点的二叉搜索树,当值为。最后,返回dp[n]

2024-01-07 20:24:45 325

原创 LeetCode450.删除二叉搜索树中的节点 Java

首先,在main函数中进行讨论,如果要删除的是根节点root,则直接调用insert函数,返回新的根节点;如果要删除的不是根节点,则通过深搜dfs函数进行遍历,若遇到子节点值为key,则调用insert,返回新的子节点。,删除二叉搜索树中的 key 对应的节点,并保证二叉搜索树的性质不变。此外,如果删除的是根节点,则需要将根节点的子节点作为新的根节点返回。因此,在删除对应节点后,要注意将该节点的左子树接到右子树的最左侧。如题目描述中所说,先找到节点,再删除节点。给定一个二叉搜索树的根节点。

2024-01-07 19:46:10 408

原创 Leetcode面试题52. 两个链表的第一个公共节点[javascript]

题目输入:intersectVal = 8, listA = [4,1,8,4,5], listB = [5,0,1,8,4,5], skipA = 2, skipB = 3输出:Reference of the node with value = 8输入解释:相交节点的值为 8 (注意,如果两个列表相交则不能为 0)。从各自的表头开始算起,链表 A 为 [4,1,8,4,5],链表 B 为...

2020-04-18 16:33:57 118

原创 Leetcode面试题22. 链表中倒数第k个节点[javascript]

题目输入一个链表,输出该链表中倒数第k个节点。为了符合大多数人的习惯,本题从1开始计数,即链表的尾节点是倒数第1个节点。例如,一个链表有6个节点,从头节点开始,它们的值依次是1、2、3、4、5、6。这个链表的倒数第3个节点是值为4的节点。1方法一 遍历后将各个指针存到数组中var getKthFromEnd = function(head, k) { var tmp = [] ...

2020-04-13 20:54:57 113 1

原创 LeetCode面试题06. 从尾到头打印链表 [javascript]

题目 输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回)。方法一 遍历后反向输出数组var reversePrint = function(head) { if( head ==null) return []; else{ var output = []; while( 1 ){ ...

2020-04-11 21:03:51 110

原创 前端练手小tips

最近练习了一些小小的前端练习题,总结其中常用的几个方法。1.使用ul li布局取消li前的点li{list-style: none;}取消li之间的间距ul{font-size: 0;}

2020-03-14 11:33:44 77

原创 JS元素属性切换的几种方法

初学前端,练习时遇到很多涉及JS元素属性切换的问题,例如鼠标移过改变背影颜色、字体颜色,点击按钮某块显示或隐藏等,简单总结几个方法。1.JS实现//鼠标移入移出object.onmouseover=function(){};object.onmouseout=function(){};//点击按钮使某模块显示或隐藏var oH2 = document.getElementsByTagN...

2020-03-11 19:21:59 1126

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除