数据结构与算法
文章平均质量分 84
漫漫求索l
这个作者很懒,什么都没留下…
展开
-
根据给定的数组或链表构建完全二叉树(Java)
import java.util.*;/** * 根据二叉树的性质(将一个完全二叉树按照从上到下,从左到右进行编号,其编号为i的节点, * 如果满足2*i<=n,则说明编号为i的节点有左孩子,否则没有,如果满足2*i+1<=n, * 则说明编号为i的节点有右孩子,否则没有)可知 2*i<=n 2*i+1<=n 该性质是对树的编号(1~n)成立的,而数组的下标是从0...原创 2018-02-25 11:30:12 · 2387 阅读 · 0 评论 -
二叉搜索树二叉搜索树Java实现
转载https://www.cnblogs.com/Michaelwjw/p/6384428.html 二叉搜索树需满足以下四个条件:若任意节点的左子树不空,则左子树上所有结点的值均小于它的根结点的值;若任意节点的右子树不空,则右子树上所有结点的值均大于它的根结点的值;任意节点的左、右子树也分别为二叉查找树;没有键值相等的节点。 二叉搜索树举例: ...转载 2018-02-25 22:45:45 · 415 阅读 · 0 评论 -
Leetcode347. 前K个高频元素
给定一个非空的整数数组,返回其中出现频率前 k 高的元素。例如,给定数组 [1,1,1,2,2,3] , 和 k = 2,返回 [1,2]。注意:你可以假设给定的 k 总是合理的,1 ≤ k ≤ 数组中不相同的元素的个数。你的算法的时间复杂度必须优于 O(n log n) , n 是数组的大小。 (1) 使用字典Map 和 优先队列PriorityQueue ...原创 2018-05-29 22:01:13 · 449 阅读 · 2 评论 -
692. 前K个高频单词
给一非空的单词列表,返回前 k 个出现次数最多的单词。返回的答案应该按单词出现频率由高到低排序。如果不同的单词有相同出现频率,按字母顺序排序。示例 1: 示例 2: 注意:假定 k 总为有效值, 1 ≤ k ≤ 集合元素数。输入的单词均由小写字母组成。 扩展练习:尝试以 O(n log k) 时间复杂度和 O(n) 空间复杂度解决.(1)There is a pretty simple Brute...原创 2018-05-29 23:00:23 · 1139 阅读 · 0 评论 -
快速排序原理
快速排序是冒泡排序的改进版,也是最好的一种内排序,在很多面试题中都会出现,也是作为程序员必须掌握的一种排序方法。思想:1.在待排序的元素任取一个元素作为基准(通常选第一个元素,但最的选择方法是从待排序元素中随机选取一个作为基准),称为基准元素; 2.将待排序的元素进行分区,比基准元素大的元素放在它的右边,比其小的放在它的左边; 3.对左右两个分区重复以上步骤直到所有元素都是...转载 2018-06-02 11:19:21 · 585 阅读 · 0 评论