【Leetcode】106.从中序与后序遍历序列构造二叉树 106. 从中序与后序遍历序列构造二叉树题目根据一棵树的中序遍历与后序遍历构造二叉树。 注意:你可以假设树中没有重复的元素。 例如,给出 中序遍历 inorder = [9,3,15,20,7] 后序遍历 postorder = [9,15,7,20,3] 返回如下的二叉树: 3 / \ 9 20 / \ 15 7 方法(递归)二叉树的三种遍历次序依次为 2021-02-19 算法 树
【Leetcode】105.从前序与中序遍历序列构造二叉树 105. 从前序与中序遍历序列构造二叉树题目根据一棵树的前序遍历与中序遍历构造二叉树。 注意:你可以假设树中没有重复的元素。 例如,给出 前序遍历 preorder = [3,9,20,15,7] 中序遍历 inorder = [9,3,15,20,7] 返回如下的二叉树: 3 / \ 9 20 / \ 15 7 方法(递归)二叉树的三种遍历次序依次为: 2021-02-19 算法 树
【Leetcode】102.二叉树的层序遍历 102.二叉树的层序遍历题目给你一个二叉树,请你返回其按 层序遍历 得到的节点值。 (即逐层地,从左到右访问所有节点)。 示例: 二叉树:[3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7 返回其层次遍历结果: [ [3], [9,20], [15,7] ] 方法(广度优先搜索)用一个队列结构来实现广度优先搜索。从 2021-02-19 算法 树
【Leetcode】96.不同的二叉搜索树 96 不同的二叉搜索树题目:给定一个整数 n,求以 1 … n 为节点组成的二叉搜索树有多少种? 示例: 输入: 3 输出: 5 解释: 给定 n = 3, 一共有 5 种不同结构的二叉搜索树: 1 3 3 2 1 \ / / / \ \ 3 2 1 1 3 2021-02-19 算法 树
【Leetcode】493.翻转对 493. 翻转对题目给定一个数组 nums ,如果 i < j 且 nums[i] > 2*nums[j] 我们就将 (i, j) 称作一个重要翻转对。 你需要返回给定数组中的重要翻转对的数量。 示例 1: 输入: [1,3,2,3,1] 输出: 2 示例 2: 输入: [2,4,3,5,1] 输出: 3 方法(归并排序)在一个数组中寻找元素对这样的情况都可以考虑归并排序的思路。 2021-02-19 算法 数组
【Leetcode】384.打乱数组 384 打乱数组题目:打乱一个没有重复元素的数组。 示例: // 以数字集合 1, 2 和 3 初始化数组。int[] nums = {1,2,3};Solution solution = new Solution(nums); // 打乱数组 [1,2,3] 并返回结果。任何 [1,2,3]的排列返回的概率应该相同。solution.shuffle(); // 重设数组到它的初始状态[1,2 2021-02-19 算法 数组
【Leetcode】349.两个数组的交集 349 两个数组的交集题目:给定两个数组,编写一个函数来计算它们的交集。 示例 1:输入: nums1 = [1,2,2,1], nums2 = [2,2]输出: [2] 示例 2:输入: nums1 = [4,9,5], nums2 = [9,4,9,8,4]输出: [9,4] 思路:由于检查一个元素是否在set中的时间复杂度为O(1),而且set中不包含重复元素。因此考虑用Hashset数 2021-02-19 算法 数组
【Leetcode】268.缺失数字 268 缺失数字题目:给定一个包含 0, 1, 2, …, n 中 n 个数的序列,找出 0 .. n 中没有出现在序列中的那个数。 示例 1:输入: [3,0,1]输出: 2 示例 2:输入: [9,6,4,2,3,5,7,0,1]输出: 8 方法一:排序法思路: 先将数组排序,然后判断排序后的数组数字是否挨着,即若两个相邻数字之间相差2,则这两个数字间的那个数字即为缺失数字 代码: 1 2021-02-19 算法 数组 位运算
【Leetcode】327.区间和的个数 327 区间和的个数题目给定一个整数数组 nums,返回区间和在 [lower, upper] 之间的个数,包含 lower 和 upper。区间和 S(i, j) 表示在 nums 中,位置从 i 到 j 的元素之和,包含 i 和 j (i ≤ j)。 示例: 输入: nums = [-2,5,-1], lower = -2, upper = 2, 输出: 3 解释: 3个区间分别是: [0, 2021-02-19 算法 数组
【Leetcode】167.两数之和 II - 输入有序数组 167. 两数之和 II - 输入有序数组题目:给定一个已按照升序排列的有序数组,找到两个数使得它们相加之和等于目标数。函数应该返回这两个下标值 index1 和 index2,其中 index1必须小于index2。 示例:输入: numbers = [2, 7, 11, 15], target = 9输出: [1,2]解释: 2 与 7 之和等于目标数 9 。因此 index1 = 1, in 2021-02-19 算法 双指针 数组