题目:正整数序列Q中的每个元素都至少能被正整数a和b中的一个整除,现给定a和b,需要计算出Q中的前几项,例如,当a=3,b=5,N=6时,序列为3,5,6,9,10,12 (1)设计一个函数void generate(i…
标签:面试算法
判断二进制数中的1有奇数个还是偶数个
判断(32位)整数的二进制表示中的1有奇数个还是偶数个 最直接的思路就是求二进制数中1的个数,然后确定是偶数还是奇数。 代码如下: // true为x二进制表示中含有奇数个1,false为偶数个1 bool OddOne…
【谷歌面试题】给出一个数组A,找出一对 (i, j)使得A[i]
题目:给出一个数组A,找出一对 (i, j)使得A[i] <= A[j] (i <= j)并且j-i最大 ,若有多个这样的位置对,返回i最小的那一对。 最直接的想法就是对于每一个 i 从数组最尾端开始向前找到…
常量空间遍历二叉树
我们知道遍历一棵二叉树,无论是先序遍历、中序遍历、后序遍历都需要一个O(n)大小的栈空间(系统栈或程序员控制的栈),或层次遍历需要一个O(n)大小的队列。那么如何在常量空间内遍历呢? 本文介绍Deutsch-Schorr…
hashtable简单实现
本文中实现了一个简单的hashtable,不一定实用,但是反应出了hashtable的原理,而且若是面试中让实现一个hashtable,本文的实现足以应付,我在一次迅雷的面试中就遇到,让实现一个hashtable。 本文…
Manacher算法求最长回文子串
Manacher算法是时间复杂度为O(n)的求最长回文子串的算法 算法的主要思想是从左到右处理字符串,求每个位置为中心的两端对称的最大半径。 由于我们只考虑以每个位置为中心,所以要把字符串转换一下,如字符串babbcaa…
求质数总结
质数又称素数。指在一个大于1的自然数中,除了1和此整数自身外,没法被其他自然数整除的数。 一、判断一个数是否为质数 首先根据定义,最简单的判断一个数n是否为质数的方法,就是从2开始对小于n的所有数,依次判断是否能整除n,…
【谷歌面试题】求数组中两个元素的最小距离
一个数组,含有重复元素,给出两个数num1和num2,求这两个数字在数组中出现的位置的最小距离 O(n)时间复杂度,O(1)空间复杂度 int minDistance(int A[], int size, int num…
【谷歌面试题】找出字符串中只包含两种字符的最长子串
给出一个字符串,找出只包含2种字符的最长子串。如aabbcbbbadef,结果是bbcbbb。 string longestSubStrWith2Chars(const string &s) { int len …
【谷歌面试题】有序输出两棵二叉查找树中的元素
题目:给出两棵二叉查找树,有序输出所有元素,时间复杂度O(n),空间复杂度O(h),h为树的高度 此题就是把两棵二叉查找树的中序遍历过程结合在一起。 struct TreeNode { int val; TreeNode…
文件中随机读取行问题
1. 有一个文件,如何在不知道有多少行的情况下读取该文件,从中随机选择并输出一行 当我们读取第 i (i > 0) 行时,以 1 / i 的概率选择第 i 行,并…
【微软面试题】在二叉搜索树中找最小的大于某个key值的节点
在二叉搜索树中找最小的大于某个key值的节点 如 8 / \ &nb…