摘要: 给定平面上 n 对不同的点,“回旋镖” 是由点表示的元组 (i, j, k) ,其中 i 和 j 之间的距离和 i 和 k 之间的距离相等(需要考虑元组的顺序)。 找到所有回旋镖的数量。你可以假设 n 最大为 500,所有点的坐标在闭区间 [-10000, 10000] 中。 示例: 输入:[[0, 阅读全文
posted @ 2020-11-19 23:14 XXXSANS 阅读(103) 评论(0) 推荐(0) 编辑
摘要: 给定一个字符串,请将字符串里的字符按照出现的频率降序排列。 示例 1: 输入:"tree" 输出:"eert" 解释:'e'出现两次,'r'和't'都只出现一次。因此'e'必须出现在'r'和't'之前。此外,"eetr"也是一个有效的答案。示例 2: 输入:"cccaaa" 输出:"cccaaa" 阅读全文
posted @ 2020-11-19 22:06 XXXSANS 阅读(111) 评论(0) 推荐(0) 编辑
摘要: 在英语中,我们有一个叫做 词根(root)的概念,它可以跟着其他一些词组成另一个较长的单词——我们称这个词为 继承词(successor)。例如,词根an,跟随着单词 other(其他),可以形成新的单词 another(另一个)。 现在,给定一个由许多词根组成的词典和一个句子。你需要将句子中的所有 阅读全文
posted @ 2020-11-19 21:43 XXXSANS 阅读(135) 评论(0) 推荐(0) 编辑
摘要: 实现一个 MapSum 类,支持两个方法,insert 和 sum: MapSum() 初始化 MapSum 对象void insert(String key, int val) 插入 key-val 键值对,字符串表示键 key ,整数表示值 val 。如果键 key 已经存在,那么原来的键值对将 阅读全文
posted @ 2020-11-19 21:36 XXXSANS 阅读(108) 评论(0) 推荐(0) 编辑
摘要: 给定一个非空数组,数组中元素为 a0, a1, a2, … , an-1,其中 0 ≤ ai < 231 。 找到 ai 和aj 最大的异或 (XOR) 运算结果,其中0 ≤ i, j < n 。 你能在O(n)的时间解决这个问题吗? 示例: 输入: [3, 10, 5, 25, 2, 8] 输出: 阅读全文
posted @ 2020-11-19 20:37 XXXSANS 阅读(121) 评论(0) 推荐(0) 编辑
摘要: 给定一棵二叉树,返回所有重复的子树。对于同一类的重复子树,你只需要返回其中任意一棵的根结点即可。 两棵树重复是指它们具有相同的结构以及相同的结点值。 示例 1: 1 / \ 2 3 / / \ 4 2 4 / 4下面是两个重复的子树: 2 / 4和 4因此,你需要以列表的形式返回上述重复子树的根结点 阅读全文
posted @ 2020-11-19 20:15 XXXSANS 阅读(161) 评论(0) 推荐(0) 编辑
摘要: 假设Andy和Doris想在晚餐时选择一家餐厅,并且他们都有一个表示最喜爱餐厅的列表,每个餐厅的名字用字符串表示。 你需要帮助他们用最少的索引和找出他们共同喜爱的餐厅。 如果答案不止一个,则输出所有答案并且不考虑顺序。 你可以假设总是存在一个答案。 示例 1: 输入:["Shogun", "Tapi 阅读全文
posted @ 2020-11-19 20:02 XXXSANS 阅读(99) 评论(0) 推荐(0) 编辑
摘要: 不使用任何内建的哈希表库设计一个哈希映射 具体地说,你的设计应该包含以下的功能 put(key, value):向哈希映射中插入(键,值)的数值对。如果键对应的值已经存在,更新这个值。get(key):返回给定的键所对应的值,如果映射中不包含这个键,返回-1。remove(key):如果映射中存在这 阅读全文
posted @ 2020-11-19 19:54 XXXSANS 阅读(131) 评论(0) 推荐(0) 编辑
摘要: 不使用任何内建的哈希表库设计一个哈希集合 具体地说,你的设计应该包含以下的功能 add(value):向哈希集合中插入一个值。contains(value) :返回哈希集合中是否存在这个值。remove(value):将给定值从哈希集合中删除。如果哈希集合中没有这个值,什么也不做。 示例: MyHa 阅读全文
posted @ 2020-11-19 14:26 XXXSANS 阅读(101) 评论(0) 推荐(0) 编辑
摘要: 任务描述 约瑟夫环是典型的线性表,可以使用不带头结点的循环单链表进行存储。本关任务,通过使用不带头结点的循环电链表存储约瑟夫环,并模拟约瑟夫环的报数出圈过程,得出约瑟夫环出圈序列。输入n(1<=n<=100)为约瑟夫初始结点个数,输入m(1<=m<=100)为一轮报数数值,输出出圈序列。 例:n=9 阅读全文
posted @ 2020-11-19 14:12 XXXSANS 阅读(726) 评论(0) 推荐(0) 编辑
摘要: 任务描述 若干个非负整数,按照不同的顺序组合拼接可以组成不同的整数,比如,有四个数123、124、56和90,可以组成的数是1231245690、1241235690、5612312490、9012312456和9056124123等等,但是,其中最大的就是9056124123。本关任务,编写一个程 阅读全文
posted @ 2020-11-19 11:57 XXXSANS 阅读(416) 评论(0) 推荐(0) 编辑
摘要: 任务描述 本关任务:实现桶排序算法,并将乱序数列变成升序。 相关知识——桶排序算法 桶排序是计数排序的升级版。它利用了函数的映射关系,高效与否的关键就在于这个映射函数的确定。桶排序 (Bucket sort)的工作的原理:假设输入数据服从均匀分布,将数据分到有限数量的桶里,每个桶再分别排序(有可能再 阅读全文
posted @ 2020-11-19 11:53 XXXSANS 阅读(270) 评论(0) 推荐(0) 编辑
摘要: 任务描述 本关任务:实现快速排序算法,并将乱序数列变成升序。 相关知识——快速排序 快速排序是最常用的一种排序算法,它的特点是速度快、效率高。快速排序的基本思想:选择一个关键值作为基准值。比基准值小的都在左边序列(一般是无序的),比基准值大的都在右边(一般是无序的)。一般选择序列的第一个元素作为基准 阅读全文
posted @ 2020-11-19 11:51 XXXSANS 阅读(336) 评论(0) 推荐(0) 编辑
摘要: 任务描述 本关任务:实现插入排序算法,并将乱序数列变成升序。 相关知识——直接插入排序 直接插入排序的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。 算法步骤: 从第一个元素开始,该元素认为已经被排序; 取下一个元素,在已经排序的元素序列中从后向前扫描; 阅读全文
posted @ 2020-11-19 11:47 XXXSANS 阅读(520) 评论(0) 推荐(0) 编辑
摘要: 任务描述 本关任务:实现选择排序算法,并将乱序数列变成升序。 相关知识——简单选择排序算法 简单选择排序是一种简单直观的排序算法,首先在未排序序列中找到最小元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最小元素,然后放到已排序序列的末尾。以此类推,直到所有元素均排序完毕。 算法步 阅读全文
posted @ 2020-11-19 11:43 XXXSANS 阅读(504) 评论(0) 推荐(0) 编辑
摘要: 任务描述 本关任务:实现冒泡排序算法,并将乱序数列变成升序。 相关知识 为了完成本关任务,你需要掌握:1.冒泡排序算法。 冒泡排序算法 冒泡排序重复地遍历待排序的数列,每次比较两个相邻元素,如果它们的顺序错误就把它们交换。重复地进行遍历直到没有再需要交换时表示数列已经排序完成。 算法步骤: 比较相邻 阅读全文
posted @ 2020-11-19 11:33 XXXSANS 阅读(676) 评论(0) 推荐(0) 编辑
摘要: 任务描述 本关任务:编程实现哈夫曼树的的构建,并求其带权路径长度 相关知识 完成本关你需要了解一下内容: 1、哈夫曼树的定义; 2、哈夫曼树的存储结构; 3、哈夫曼树的构造算法; 4、哈夫曼树带权路径长度计算方法 1、哈夫曼树的定义 给定一组具有确定权值的叶子结点,构造出带权路径长度最小的二叉树即为 阅读全文
posted @ 2020-11-19 11:30 XXXSANS 阅读(1998) 评论(0) 推荐(0) 编辑
摘要: 任务描述 给定一个二叉树, 找到该树中两个指定结点的最近公共祖先结点 相关知识 为了完成本关任务,你需要掌握: 1、二叉树两结点最近公共祖先的定义 2、递归方法查找最近公共祖先的算法 1、二叉树两结点最近公共祖先的定义 二叉树中有两个结点 p、q,则p,q的所有公共祖先中,层次最大的公共祖先结点即为 阅读全文
posted @ 2020-11-19 11:29 XXXSANS 阅读(832) 评论(0) 推荐(0) 编辑
摘要: 任务描述 本关任务:给定一棵二叉树,借助队列实现层次遍历二叉树。 相关知识 为了完成本关任务,你需要掌握: 1、STL框架队列的使用; 2、二叉树层次遍历。 1、STL框架队列的使用 (1)引入头文件 #include<queue>// 队列 (2)定义队列 queue<int> q; //参数是数 阅读全文
posted @ 2020-11-19 11:17 XXXSANS 阅读(1051) 评论(0) 推荐(0) 编辑
摘要: 任务描述 本关任务:利用扩展先序遍历创建二叉树,并给出相应二叉树的中序遍历结果。 相关知识 为了完成本关任务,你需要掌握: 1.二叉树的先序遍历 2.如何创建一棵二叉树 3.二叉树的中序遍历 4.二叉树的二叉链表存储表示。 二叉树的先序遍历 先序遍历(preorder traversal): 1、访 阅读全文
posted @ 2020-11-19 11:11 XXXSANS 阅读(1332) 评论(0) 推荐(0) 编辑