数据结构与算法
Called_Kingsley
想当摄影师的一个大数据工程师
展开
-
Leecode 二叉树的前、中、后序遍历解法
题目 给定一个二叉树,返回它的 前序 遍历。 给定一个二叉树,返回它的 中序 遍历。 给定一个二叉树,返回它的 后序 遍历。 但是很明显,如果是递归写法,十分简单,不会是中等难度了 题上也明确表示了,写 迭代算法 public List<Integer> preorderTraversal(TreeNode root) { } ps : 这三道题的题号分别是144,94,145 什么是二叉树 百度直达链接 二叉树 前序、中序、后序 前序: 先输出根节点,然后输出左孩子节点,然后输出右原创 2020-09-30 15:17:50 · 146 阅读 · 0 评论 -
Leecode 17 电话号码的字母组合
题目: 给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。 给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。 示例: 输入:“23” 输出:[“ad”, “ae”, “af”, “bd”, “be”, “bf”, “cd”, “ce”, “cf”]. 说明: 尽管上面的答案是按字典序排列的,但是你可以任意选择答案输出的顺序。 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/letter-combinations-原创 2020-08-26 17:20:08 · 171 阅读 · 0 评论 -
Leecode 347. 前 K 个高频元素 由此引发的对于优先级队列 最大堆&最小堆的思考
题目描述 给定一个非空的整数数组,返回其中出现频率前 k 高的元素。 示例 1: 输入: nums = [1,1,1,2,2,3], k = 2 输出: [1,2] 示例 2: 输入: nums = [1], k = 1 输出: [1] link 思路 首先,题目中有”前 k 高“这样的字眼,应该很自然地联想到优先队列。(只要有“前K” 都可以联想下优先级队列) 那出现频率怎么统计呢,我们既要保留原数组的元素,还要统计它出现的频率。那么很明显,需要一个map来存放<元素,元素出现的频率>原创 2020-08-07 11:38:39 · 163 阅读 · 0 评论 -
Leecode 148. 排序链表
题目描述 在 O(n log n) 时间复杂度和常数级空间复杂度下,对链表进行排序。 示例 1: 输入: 4->2->1->3 输出: 1->2->3->4 示例 2: 输入: -1->5->3->4->0 输出: -1->0->3->4->5 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/sort-list 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请原创 2020-06-29 18:08:33 · 4931 阅读 · 0 评论 -
LeeCode 215. 数组中的第K个最大元素
题目: 在未排序的数组中找到第 k 个最大的元素。请注意,你需要找的是数组排序后的第 k 个最大的元素,而不是第 k 个不同的元素。 示例 1: 输入: [3,2,1,5,6,4] 和 k = 2 输出: 5 示例 2: 输入: [3,2,3,1,2,4,5,5,6] 和 k = 4 输出: 4 说明: 你可以假设 k 总是有效的,且 1 ≤ k ≤ 数组的长度。 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/kth-largest-el原创 2020-06-19 17:40:43 · 140 阅读 · 0 评论 -
Leecode 33. 搜索旋转排序数组
目录题目:分析:代码 题目: 假设按照升序排序的数组在预先未知的某个点上进行了旋转。 ( 例如,数组 [0,1,2,4,5,6,7] 可能变为 [4,5,6,7,0,1,2] )。 搜索一个给定的目标值,如果数组中存在这个目标值,则返回它的索引,否则返回 -1 。 你可以假设数组中不存在重复的元素。 你的算法时间复杂度必须是 O(log n) 级别。 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/search-in-rotated-sorted-ar原创 2020-06-15 22:53:28 · 118 阅读 · 0 评论 -
Leecode-15 三数之和
题目要求: 给你一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?请你找出所有满足条件且不重复的三元组。 注意:答案中不可以包含重复的三元组。 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/3sum 示例: 给定数组 nums = [-1, 0, 1, 2, -1, -4], 满足要求的三元组集合为: [ [-1, 0, 1], [-1, -1, 2] ] 思路: 一 很明显,原创 2020-06-12 16:40:13 · 135 阅读 · 0 评论 -
Leecode-739 每日温度
目录题目要求:思路1:代码:思路2:代码: 题目要求: 根据每日 气温 列表,请重新生成一个列表,对应位置的输出是需要再等待多久温度才会升高超过该日的天数。如果之后都不会升高,请在该位置用 0 来代替。 例如,给定一个列表 temperatures = [73, 74, 75, 71, 69, 72, 76, 73],你的输出应该是 [1, 1, 4, 2, 1, 1, 0, 0]。 提示:气温 列表长度的范围是 [1, 30000]。每个气温的值的均为华氏度,都是在 [30, 100] 范围内的整数。 思原创 2020-06-02 23:27:05 · 156 阅读 · 0 评论 -
Leecode-567 字符串的排列
题目描述 给定两个字符串 s1 和 s2,写一个函数来判断 s2 是否包含 s1 的排列。 换句话说,第一个字符串的排列之一是第二个字符串的子串。 示例1: 输入: s1 = “ab” s2 = “eidbaooo” 输出: True 解释: s2 包含 s1 的排列之一 (“ba”). 示例2: 输入: s1= “ab” s2 = “eidboaoo” 输出: False 思路 第一眼看到这个题 暴力解法在脑海里面就散开了 直接罗列s1的所有字符的排列组合,然后每个组合都去跟s2匹配,看看是否在s2中存原创 2020-05-27 18:22:13 · 186 阅读 · 0 评论 -
Leecode-974 和可被 K 整除的子数组
题目描述 给定一个整数数组 A,返回其中元素之和可被 K 整除的(连续、非空)子数组的数目。 示例: 输入:A = [4,5,0,-2,-3,1], K = 5 输出:7 解释: 有 7 个子数组满足其元素之和可被 K = 5 整除: [4, 5, 0, -2, -3, 1], [5], [5, 0], [5, 0, -2, -3], [0], [0, -2, -3], [-2, -3] 代码: public int subarraysDivByK(int[] A, int K) { Ma原创 2020-05-27 16:32:47 · 161 阅读 · 0 评论 -
Leecode 560 和为K的子数组个数
题目说明: 给定一个整数数组和一个整数 k,你需要找到该数组中和为 k 的连续的子数组的个数。 示例 1 : 输入:nums = [1,1,1], k = 2 输出: 2 , [1,1] 与 [1,1] 为两种不同的情况。 说明 : 数组的长度为 [1, 20,000]。 数组中元素的范围是 [-1000, 1000] ,且整数 k 的范围是 [-1e7, 1e7] 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/subarray-sum-equals原创 2020-05-15 11:35:00 · 274 阅读 · 0 评论 -
排序算法的比较
排序 平均情况 最坏情况 比较 附加存储 冒泡排序 O() O() 及格 不需要 选择排序 O() O() 良好 不需要 插入排序 O() O() 优良 不需要 希尔排序 O() O() --- 不需要 快速排序 O(N*logN) O() ...原创 2019-03-24 11:06:04 · 115 阅读 · 0 评论 -
通用数据存储结构以及他们的时间复杂度
数据结构 查找 插入 删除 遍历 数组 O(N) O ( 1 ) O ( N ) --- 有序数组 O(logN)(二分查找) O(N) O(N) O(N) 链表 O(N) O(1) O ( N ) --- 有序链表 O(N) O ( N ) O(N) ...原创 2019-03-24 10:39:22 · 442 阅读 · 0 评论