摘要:
下午两点四十七接到一个电话, 0571开头的, 杭州的, 不会有错了过程:第一个问题, C,C++, malloc, free 和 new, delete 的异同点. 不知道, 我自己没用过malloc 和 free, 完全不知道从何答起, 只好说 new 是申请一块空的内存, 返回指向空内存的指针. delete 用来回收被分配的内存, 这个题目挂了第二个问题, static 是怎么实现的, 特点, 与全局变量的区别, 一个文件能不能访问另一个文件的 static 变量, 能的话为什么, 不能的话又为什么. 我只知道 static 是和类或方法绑定的, 其余一概不知第三个问题, C++ 多态 阅读全文
摘要:
1. 思路比较简单, 每次从数组中抽出两个数, 若是不同则丢弃两个数, 最后剩下的数即为所求2. 书中给出的代码实现比较巧妙. 遍历数组中的元素, 变量 result 记录当前元素, time 记录出现的次数, 当元素的出现次数为 0 时, 更新 result, 遍历一遍数组, 返回 result, 这段代码给我的感觉是, 金子总会发光.. 阅读全文
摘要:
1. 使用最小堆, 设置最小堆的大小为K, 仅需遍历一遍即可2. 寻找最大的 K 个数实质上是寻找第 K 大的数. 通过二分法在区间内不断校正 mid 的值来找到 pivot, 时间复杂度为 o(N*logN), 最后以 o(N) 的复杂度滤出 K-1 个数3. 哈希算法, 假定数都是整数. 将所有的数看成二进制的, 若某一个数最高位为第 i 位, 则将该数放到第 i 个桶中, 统计各个桶中的个数, 递归求解, 逐步缩小 K 所在的桶的范围 阅读全文
摘要:
假设浮点数为 X 的表示形式为X = 0.a1a2...an (b1b2...bm)那么 10^N * X = a1a2...an.(b1b2...bm)同时, 令 Y = 0.(b1b2...bm)那么 Y*10^M = b1b2...bm(b1b2...bm)得到等式 Y*10^M - b1b2...bm = Y, 可以解出 Y将 Y 带入 10^N*X 可解出 X 阅读全文
摘要:
1. O(N*logN) 解法先对序列排序, 然后寻找两个序列的最长公共子序列2. O(N*N) 的动态规划解法令 LIST[i] 表示以 i 为结尾的最长子序列的长度, 那么 LIST[J] = MAX(LIST[I]+1), J > I3. O(N*logN) 的动态规划解法 (需要 O(N) 的空间复杂度)设置一个数组 B[], 记录 B[] 记录长度为 i 的 LIS 的末尾元素, 向 B 中插入数据使用二分插入, 即可实现 N*logN 的时间复杂度方法很是奇妙 阅读全文