随笔分类 - 算法练习
算法
摘要:title: 二叉树的基本知识 date: 2022-06-12 15:37:23 tags: 二叉树 算法 二叉树的四种遍历方式 不要较真,其实也可以分为两种:广度优先(层级)和深度优先(前序、中序、后序) 基本概念不再赘述。**复杂度:**设二叉树中元素数目为n。这四种遍历算法的空间复杂性均为O
阅读全文
摘要:给你一个整数数组 nums 和一个整数 target 。 向数组中的每个整数前添加 '+' 或 '-' ,然后串联起所有整数,可以构造一个 表达式 : 例如,nums = [2, 1] ,可以在 2 之前添加 '+' ,在 1 之前添加 '-' ,然后串联起来得到表达式 "+2-1" 。返回可以通过
阅读全文
摘要:给定一个二进制数组 nums , 找到含有相同数量的 0 和 1 的最长连续子数组,并返回该子数组的长度。 示例 1: 输入: nums = [0,1]输出: 2说明: [0, 1] 是具有相同数量0和1的最长连续子数组。示例 2: 输入: nums = [0,1,0]输出: 2说明: [0, 1]
阅读全文
摘要:给你一个整数数组 nums 和一个整数 k ,编写一个函数来判断该数组是否含有同时满足下述条件的连续子数组: 子数组大小 至少为 2 ,且子数组元素总和为 k 的倍数。如果存在,返回 true ;否则,返回 false 。 如果存在一个整数 n ,令整数 x 符合 x = n * k ,则称 x 是
阅读全文
摘要:给你一个整数数组 arr 。 现需要从数组中取三个下标 i、j 和 k ,其中 (0 <= i < j <= k < arr.length) 。 a 和 b 定义如下: a = arr[i] ^ arr[i + 1] ^ ... ^ arr[j - 1]b = arr[j] ^ arr[j + 1]
阅读全文
摘要:有一个正整数数组 arr,现给你一个对应的查询数组 queries,其中 queries[i] = [Li, Ri]。 对于每个查询 i,请你计算从 Li 到 Ri 的 XOR 值(即 arr[Li] xor arr[Li+1] xor ... xor arr[Ri])作为本次查询的结果。 并返回一
阅读全文
摘要:给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点。 进阶:你能尝试使用一趟扫描实现吗? 示例 1: 输入:head = [1,2,3,4,5], n = 2输出:[1,2,3,5]示例 2: 输入:head = [1], n = 1输出:[]示例 3: 输入:head = [1,2]
阅读全文
摘要:请考虑一棵二叉树上所有的叶子,这些叶子的值按从左到右的顺序排列形成一个 叶值序列 。 举个例子,如上图所示,给定一棵叶值序列为 (6, 7, 4, 9, 8) 的树。 如果有两棵二叉树的叶值序列是相同,那么我们就认为它们是 叶相似 的。 如果给定的两个根结点分别为 root1 和 root2 的树是
阅读全文
摘要:给你两个整数,n 和 start 。 数组 nums 定义为:nums[i] = start + 2*i(下标从 0 开始)且 n == nums.length 。 请返回 nums 中所有元素按位异或(XOR)后得到的结果。 示例 1: 输入:n = 5, start = 0输出:8解释:数组 n
阅读全文
摘要:未知 整数数组 arr 由 n 个非负整数组成。 经编码后变为长度为 n - 1 的另一个整数数组 encoded ,其中 encoded[i] = arr[i] XOR arr[i + 1] 。例如,arr = [1,0,2,1] 经编码后得到 encoded = [1,2,3] 。 给你编码后的
阅读全文
摘要:给你 n 个非负整数 a1,a2,...,an,每个数代表坐标中的一个点 (i, ai) 。在坐标内画 n 条垂直线,垂直线 i 的两个端点分别为 (i, ai) 和 (i, 0) 。找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。 说明:你不能倾斜容器。 示例 1: 输入:[1
阅读全文
摘要:存在一个按升序排列的链表,给你这个链表的头节点 head ,请你删除所有重复的元素,使每个元素 只出现一次 。 返回同样按升序排列的结果链表。 示例 1: 输入:head = [1,1,2]输出:[1,2]示例 2: 输入:head = [1,1,2,3,3]输出:[1,2,3] 提示: 链表中节点
阅读全文
摘要:存在一个按升序排列的链表,给你这个链表的头节点 head ,请你删除链表中所有存在数字重复情况的节点,只保留原始链表中 没有重复出现 的数字。 返回同样按升序排列的结果链表。 示例 1: 输入:head = [1,2,3,3,4,4,5]输出:[1,2,5]示例 2: 输入:head = [1,1,
阅读全文
摘要:redis: 数据结构 redis的五种基本数据结构: string、hash、set、zset、list、HyperLogLog.... 补充:BloomFilter等 redis的性能: 写:11万/s 、读:80万/s string 长度不得超过512MB 底层为SDS、动态字符串 结构:le
阅读全文
摘要:给定一个二叉树,判断其是否是一个有效的二叉搜索树。 假设一个二叉搜索树具有如下特征: 节点的左子树只包含小于当前节点的数。节点的右子树只包含大于当前节点的数。所有左子树和右子树自身必须也是二叉搜索树。示例 1: 输入: 2 / \ 1 3输出: true示例 2: 输入: 5 / \ 1 4 / \
阅读全文
摘要:给你一个字符串 s,找到 s 中最长的回文子串。 示例 1: 输入:s = "babad"输出:"bab"解释:"aba" 同样是符合题意的答案。示例 2: 输入:s = "cbbd"输出:"bb"示例 3: 输入:s = "a"输出:"a"示例 4: 输入:s = "ac"输出:"a" 提示: 1
阅读全文
摘要:给你一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?请你找出所有和为 0 且不重复的三元组。 注意:答案中不可以包含重复的三元组。 示例 1: 输入:nums = [-1,0,1,2,-1,-4]输出:[[-1,-1,2],
阅读全文
摘要:两个整数之间的汉明距离指的是这两个数字对应二进制位不同的位置的数目。 给出两个整数 x 和 y,计算它们之间的汉明距离。 注意:0 ≤ x, y < 231. 示例: 输入: x = 1, y = 4 输出: 2 解释:1 (0 0 0 1)4 (0 1 0 0) ↑ ↑ 上面的箭头指出了对应二进制
阅读全文
摘要:反转一个单链表。 示例: 输入: 1->2->3->4->5->NULL输出: 5->4->3->2->1->NULL进阶:你可以迭代或递归地反转链表。你能否用两种方法解决这道题? 来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/reverse-
阅读全文
摘要:给定一个大小为 n 的数组,找到其中的多数元素。多数元素是指在数组中出现次数 大于 ⌊ n/2 ⌋ 的元素。 你可以假设数组是非空的,并且给定的数组总是存在多数元素。 示例 1: 输入:[3,2,3]输出:3示例 2: 输入:[2,2,1,1,1,2,2]输出:2 进阶: 尝试设计时间复杂度为 O(
阅读全文