经典算法问题
文章平均质量分 73
kainever
这个作者很懒,什么都没留下…
展开
-
海量日志数据,提取出某日访问百度次数最多的那个IP
这道题目 的思路就是 : 先把大的文件分成小的文件,然后在逐个的在小文件中统计,这样就避免了一次性把所有的记录加载进来承受不了!然后再对结果排序。 但是,这里有一个问题,怎么把大的文件分成小文件了? 看网友们的博客的时候,大家都说,对IP地址hash 然后再取模 == Hash(IP) % 1000; 然后,所有相同的IP地址就会映射到一个文件了,当时原创 2015-07-25 22:14:09 · 1316 阅读 · 0 评论 -
头尾指针
1. 三数和 3SUM 2. 数组中的元素能构成的最大面积(Container With Most Water)原创 2015-07-25 22:22:13 · 598 阅读 · 0 评论 -
逆序对问题 (O(nlgn))
问题描述 在数组arr[]中,i arr[j] 那么就存在一个逆序对 目的就是求出逆序对的数目。 算法 暴力求解,O(n^2); 下面运用了一种很巧妙的方法,通过归并排序的归并过程,进行逆序对的统计! 具体例子分析: 比如 1 5 3 2 4 当 1 3 5 与 2 4 合并的时原创 2015-07-25 22:19:56 · 329 阅读 · 0 评论 -
Container With Most Water (头尾指针的妙用)
对于数组 A , 怎么求的Max((j - i) * [min (A[i] , A[j])]) , 其中 i , j 这道题目, 暴力的话,很容易, O(n^2) , 可是采用头尾指针的方法可以在O(n)的时间内完成! O(n) 的代码 及其简单,就是头尾指针,谁小谁移动,然后,求两个指针间的面积,再更新 最大面积即可。 但是,为什么?为什么这个原创 2015-07-25 22:22:04 · 337 阅读 · 0 评论 -
前后指针的妙用之3 SUM
题目意思 : 在一个数组中,无重复元素,找出所有 组合 他们的和 == 0 即 a + b + c = 0; 组合满足的条件 : 1 . a 2 . 组合不能重复 题目思路: 如果是暴力求解话,那么就得有三个for循环,时间复杂度为 O(n^3); 而下面的方法,为O(n^2) 首先对数组排序; 然后可以借鉴暴力求解原创 2015-07-25 22:19:50 · 344 阅读 · 0 评论 -
最长回文子串
思路: 分两种情况考虑: 第一种:奇数回文,比如:“aba” 第二种:偶树回文 ,比如:“adda” 然后遍历字符串,以该字符为中心,检查它的前后能够构成上述两种情况中的 回文串。 时间复杂度: O(n ^2) 代码: public class Solution { //最长回文子原创 2015-07-25 22:21:47 · 335 阅读 · 0 评论 -
子矩阵问题
矩阵中的最大正方形子矩阵(Maximal Square) 题目描述:1 0 1 0 01 0 1 1 11 1 1 1 11 0 0 1 0 比如说,在这个矩阵中,由1构成的最大正方形子矩阵就是4. 题目分析: matrix[ ][ ] 用来存放01,那么当求矩阵[i][j] 的最大矩阵时,用一个 max存放正方形的边长 如果[i][j]原创 2015-07-25 22:21:30 · 516 阅读 · 0 评论 -
两个有序数组合并找第k个元素
暴力求解 : O(m + n) 限定时间复杂度:O(lg(m + n)) 思路: 设定两个数组A , B amid , bmid分别为a ,b的中点 比较A[amid] 与 B[mid]的值。 只考虑A[mid] 那么可以得到: B[mid] 前面一定有 amid + bmid原创 2015-07-25 22:21:42 · 460 阅读 · 0 评论