随笔分类 -  算法

牛客网算法
摘要:题目描述 给定一个二叉树,找出其最小深度。 最小深度是从根节点到最近叶子节点的最短路径上的节点数量。 说明:叶子节点是指没有子节点的节点。 方法1 描述 题目中说明:叶子节点是指没有子节点的节点,这句话的意思是 1 不是叶子节点 题目问的是到叶子节点的最短距离,所以所有返回结果为 1 当然不是这个结 阅读全文
posted @ 2023-02-27 14:49 loongnuts 阅读(19) 评论(0) 推荐(0) 编辑
摘要:题目描述 给定一个二叉树,判断它是否是高度平衡的二叉树。 本题中,一棵高度平衡二叉树定义为: 一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1 。 方法1 描述 二叉树的每个节点的左右子树的高度差的绝对值不超过 111,则二叉树是平衡二叉树。 根据定义,一棵二叉树是平衡二叉树,当且仅当其 阅读全文
posted @ 2023-02-19 14:44 loongnuts 阅读(29) 评论(0) 推荐(0) 编辑
摘要:题目描述 给你一个整数数组 nums ,其中元素已经按 升序 排列,请你将其转换为一棵 高度平衡 二叉搜索树。 高度平衡 二叉树是一棵满足「每个节点的左右两个子树的高度差的绝对值不超过 1 」的二叉树。 方法1 中序遍历 描述 选择中间位置左边的数字作为根节点,则根节点的下标为 mid=(left+ 阅读全文
posted @ 2023-02-18 14:01 loongnuts 阅读(26) 评论(0) 推荐(0) 编辑
摘要:题目描述 给定一个二叉树,找出其最大深度。 二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。 说明: 叶子节点是指没有子节点的节点。 方法1 深度优先搜索 描述 如果我们知道了左子树和右子树的最大深度 l 和 r,那么该二叉树的最大深度即为max(l,r)+1, 而左子树和右子树的最大深度又 阅读全文
posted @ 2023-02-15 15:14 loongnuts 阅读(45) 评论(0) 推荐(0) 编辑
摘要:题目描述 给你一个二叉树的根节点 root , 检查它是否轴对称。 方法1 描述 根据题目的描述,镜像对称,就是左右两边相等,也就是左子树和右子树是相当的。 注意这句话,左子树和右子相等,也就是说要递归的比较左子树和右子树。 我们将根节点的左子树记做 left,右子树记做 right。比较 left 阅读全文
posted @ 2023-02-14 15:15 loongnuts 阅读(24) 评论(0) 推荐(0) 编辑
摘要:题目描述 给你两棵二叉树的根节点 p 和 q ,编写一个函数来检验这两棵树是否相同。 如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的。 方法1 描述 如果两个二叉树都为空,则两个二叉树相同。如果两个二叉树中有且只有一个为空,则两个二叉树一定不相同。 如果两个二叉树都不为空,那么首先 阅读全文
posted @ 2023-02-13 13:09 loongnuts 阅读(27) 评论(0) 推荐(0) 编辑
摘要:题目描述 给定一个二叉树的根节点 root ,返回 它的 中序 遍历 。 方法1 描述 按照访问左子树——根节点——右子树的方式遍历这棵树,而在访问左子树或者右子树的时候我们按照同样的方式遍历,直到遍历完整棵树。 因此整个遍历过程天然具有递归的性质,我们可以直接用递归函数来模拟这一过程。 代码 pa 阅读全文
posted @ 2023-02-08 14:42 loongnuts 阅读(21) 评论(0) 推荐(0) 编辑
摘要:题目描述 给你两个按 非递减顺序 排列的整数数组 nums1 和 nums2,另有两个整数 m 和 n ,分别表示 nums1 和 nums2 中的元素数目。 请你 合并 nums2 到 nums1 中,使合并后的数组同样按 非递减顺序 排列。 注意:最终,合并后数组不应由函数返回,而是存储在数组 阅读全文
posted @ 2023-01-27 16:47 loongnuts 阅读(14) 评论(0) 推荐(0) 编辑
摘要:题目描述 给定一个已排序的链表的头 head , 删除所有重复的元素,使每个元素只出现一次 。 返回 已排序的链表 。 方法1 双指针方式 描述 指针p去找寻是否为相同的节点 如果不是,则在cur后边进行添加,防止重复出现 如果是,直接跳过,遍历下一个节点 存在问题:不需要创建Set对象来存储重复值 阅读全文
posted @ 2023-01-26 18:53 loongnuts 阅读(39) 评论(0) 推荐(0) 编辑
摘要:题目描述 假设你正在爬楼梯。需要 n 阶你才能到达楼顶。 每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢? 方法1 递归 描述 如果是在第0节或者第1节台阶,就只有1种方式 而其他节为前一节和前两节的和,所以用递归 但是当数值比较大的时候,会超出时间 代码 package ea 阅读全文
posted @ 2023-01-20 16:18 loongnuts 阅读(32) 评论(0) 推荐(0) 编辑
摘要:题目描述 给你一个非负整数 x ,计算并返回 x 的 算术平方根 。 由于返回类型是整数,结果只保留 整数部分 ,小数部分将被 舍去 。 注意:不允许使用任何内置指数函数和算符,例如 pow(x, 0.5) 或者 x ** 0.5 。 方法1 描述 由于 x 平方根的整数部分 ans 是满足 k2 阅读全文
posted @ 2023-01-18 16:57 loongnuts 阅读(17) 评论(0) 推荐(0) 编辑
摘要:题目描述 给定一个由 整数 组成的 非空 数组所表示的非负整数,在该数的基础上加一。 最高位数字存放在数组的首位, 数组中每个元素只存储单个数字。 你可以假设除了整数 0 之外,这个整数不会以零开头。 方法1 描述 考虑一个最朴素的方法:先将 a 和 b 转化成十进制数,求和后再转化为二进制数。 代 阅读全文
posted @ 2023-01-17 14:37 loongnuts 阅读(29) 评论(0) 推荐(0) 编辑
摘要:66. 加一 题目描述 给定一个由 整数 组成的 非空 数组所表示的非负整数,在该数的基础上加一。 最高位数字存放在数组的首位, 数组中每个元素只存储单个数字。 你可以假设除了整数 0 之外,这个整数不会以零开头。 方法 数学 如果存在目标值,直接返回 否则一直搜索,最后返回leftindex。 如 阅读全文
posted @ 2023-01-16 13:19 loongnuts 阅读(18) 评论(0) 推荐(0) 编辑
摘要:58. 最后一个单词的长度 题目描述 给你一个字符串 s,由若干单词组成,单词前后用一些空格字符隔开。返回字符串中 最后一个 单词的长度。 单词 是指仅由字母组成、不包含任何空格字符的最大子字符串。 方法 从字符串最后开始遍历 从第一个不等于空字符开始计数,如果再为空结束 代码 package ea 阅读全文
posted @ 2023-01-15 13:42 loongnuts 阅读(18) 评论(0) 推荐(0) 编辑
摘要:35. 搜索插入位置 题目描述 给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。 如果目标值不存在于数组中,返回它将会被按顺序插入的位置。 请必须使用时间复杂度为 O(log n) 的算法。 方法 二分查找 如果存在目标值,直接返回 否则一直搜索,最后返回leftindex。 如果最 阅读全文
posted @ 2023-01-14 14:41 loongnuts 阅读(15) 评论(0) 推荐(0) 编辑
摘要:27. 移除元素 题目描述 给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素,并返回移除后数组的新长度。 不要使用额外的数组空间,你必须仅使用 O(1) 额外空间并 原地 修改输入数组。 元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。 方法1 思 阅读全文
posted @ 2023-01-13 15:15 loongnuts 阅读(21) 评论(0) 推荐(0) 编辑
摘要:21. 合并两个有序链表 题目描述 将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 方法 暴力算法 先判断是否有一个为空,有则直接返回另一个即可 新创建一个链表存储排序后的结果集 将都不会null的值进行比较,存放 最后如果某个链表不会空,直接放在结 阅读全文
posted @ 2023-01-12 13:58 loongnuts 阅读(22) 评论(0) 推荐(0) 编辑
摘要:20. 有效的括号 题目描述 给定一个只包括 '(',')','{','}','[',']' 的字符串 s ,判断字符串是否有效。 有效字符串需满足: 左括号必须用相同类型的右括号闭合。 左括号必须以正确的顺序闭合。 每个右括号都有一个对应的相同类型的左括号。 方法 java,建立一个新的栈,然后遍 阅读全文
posted @ 2023-01-10 14:34 loongnuts 阅读(15) 评论(0) 推荐(0) 编辑
摘要:14. 最长公共前缀 题目描述 编写一个函数来查找字符串数组中的最长公共前缀。 如果不存在公共前缀,返回空字符串 ""。 方法 暴力算法 先判断字符串数组是否有为空,为空直接返回空 令第一个字符串作为基准进行比较 设置一个长度,作为最后最长公共前缀的长度 循环判断,选取最小长度 代码 package 阅读全文
posted @ 2023-01-09 15:14 loongnuts 阅读(53) 评论(0) 推荐(0) 编辑
摘要:JZ86 在二叉树中找到两个节点的最近公共祖先 题目 给定一棵二叉树(保证非空)以及这棵树上的两个节点对应的val值 o1 和 o2,请找到 o1 和 o2 的最近公共祖先节点。 注:本题保证二叉树中每个节点的val值均不相同。 方法 BFS,非递归方法 思路 算法实现 看到6和7公共祖先有5和3, 阅读全文
posted @ 2023-01-07 14:42 loongnuts 阅读(78) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示