文章分类 - 算法-查找
摘要:获取数组中第k小的元素 这类问题有几种方法: 1. 数组中元素取值范围有限的情况下,适合使用哈希表的方式,一个哈希表长度为取值范围,初始值为0,有一个值取到就加1,然后从最小段开始搜索,直到找到第k小的元素所在的位置。该方法为O(n)的,空间复杂度是O(m),m为取值范围 2. k小的时候,适合构造
阅读全文
摘要:玛雅人的密码 题目描述 玛雅人有一种密码,如果字符串中出现连续的2012四个数字就能解开密码。给一个长度为N的字符串,(2= set = new HashSet(); ArrayDeque queue = new ArrayDeque(); while (sc.hasNext()) { int le
阅读全文
摘要:字典序(今日头条2017秋招真题) 给定整数n和m,将1到n的这n个整数按字典序排列之后,求其中的第m个数字。 对于n = 11,m = 4,按字典序排列依次为1, 10, 11, 2, 3, 4, 5, 6, 7, 8, 9,因此第4个数字为2。 输入 输入仅包含两个整数n和m。 样例输入 1
阅读全文
摘要:String Shifting(今日头条2017秋招真题) 题目描述 我们规定对一个字符串的shift操作如下: shift(“ABCD”, 0) = “ABCD” shift(“ABCD”, 1) = “BCDA” shift(“ABCD”, 2) = “CDAB” 换言之, 我们把最左侧的N个字
阅读全文
摘要:异或(今日头条2017秋招真题) 题目描述 给定整数m以及n个数字A1, A2, …, An,将数列A中所有元素两两异或,共能得到n(n 1)/2个结果。请求出这些结果中大于m的有多少个。 输入 第一行包含两个整数n, m。 第二行给出n个整数A1, A2, …, An。 样例输入 3 10 6
阅读全文
摘要:翻转数组 | 输入 第一行数据是一个整数:n (1≤n≤105),表示数组长度。第二行数据是n个整数a[1], a[2], ..., a[n] (1≤a[i]≤109)。 | 样例输入 | | | | | 输出 输出“yes”,如果存在;否则输出“no”,不用输出引号。 | 样例输出 yes | |
阅读全文
摘要:数据流中的中位数 如何得到一个数据流中的中位数?如果从数据流中读出奇数个数值,那么中位数就是所有数值排序之后位于中间的数值。如果从数据流中读出偶数个数值,那么中位数就是所有数值排序之后中间两个数的平均值。我们使用Insert()方法读取数据流,使用GetMedian()方法获取当前读取数据的中位数。
阅读全文
摘要:数字在排序数组中出现的次数 统计一个数字在排序数组中出现的次数。 这道题很简单: 这里只讲一个相关的,就是 布尔表达式的短路判断 : 这道题没涉及到,但是如果将代码中的表达式写成: ,那么, 和`array[i]==k array[i]==k array[i]==k i<length`一定要写在前面
阅读全文
摘要:整数中1出现的次数(从1到n整数中1出现的次数) 求出1~13的整数中1出现的次数,并算出100~1300的整数中1出现的次数?为此他特别数了一下1~13中包含1的数字有1、10、11、12、13因此共出现6次,但是对于后面问题他就没辙了。ACMer希望你们帮帮他,并把问题更加普遍化,可以很快的求出
阅读全文
摘要:数组中出现次数超过一半的数字 数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}。由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2。如果不存在则输出0。 思路1:使用map保存出现的次数 这种方法从计算复杂度的角
阅读全文
摘要:在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。 一、暴力法 1. 分析 挨个遍历数组,如果找到就返回 true 2. 代码 public class So
阅读全文

浙公网安备 33010602011771号