![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构与算法
Called_Kingsley
想当摄影师的一个大数据工程师
展开
-
Leecode 二叉树的前、中、后序遍历解法
题目给定一个二叉树,返回它的 前序 遍历。给定一个二叉树,返回它的 中序 遍历。给定一个二叉树,返回它的 后序 遍历。但是很明显,如果是递归写法,十分简单,不会是中等难度了题上也明确表示了,写 迭代算法 public List<Integer> preorderTraversal(TreeNode root) { }ps : 这三道题的题号分别是144,94,145什么是二叉树百度直达链接 二叉树前序、中序、后序前序: 先输出根节点,然后输出左孩子节点,然后输出右原创 2020-09-30 15:17:50 · 153 阅读 · 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 · 181 阅读 · 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 · 178 阅读 · 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 · 4948 阅读 · 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 · 156 阅读 · 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 · 143 阅读 · 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 · 149 阅读 · 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 · 177 阅读 · 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 · 193 阅读 · 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 · 165 阅读 · 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 · 297 阅读 · 0 评论 -
排序算法的比较
排序 平均情况 最坏情况 比较 附加存储 冒泡排序 O() O() 及格 不需要 选择排序 O() O() 良好 不需要 插入排序 O() O() 优良 不需要 希尔排序 O() O() --- 不需要 快速排序 O(N*logN) O() ...原创 2019-03-24 11:06:04 · 119 阅读 · 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 · 447 阅读 · 0 评论