随笔分类 - 算法思想
摘要:错误思考 53. 最大子数组和 初次看题,首先暴力的来看,最大子数和。那么就是将每一个数组里的数作为开头,然后向后遍历找。直到找到最大,时间O(n2),显然不合适。 于是思考有木有更好的方法,于是就开始思考有木有规律。于是想到先以第一个数为开头,然后向后遍历找到最大,然后再把开头开始一个一个减去,找
阅读全文
摘要:首先我们明确,二分都是由于某个可以检查的条件,将一个区间分为两半 所以我们首先有一个check函数,对中间mid进行判断 func check(mid int) bool { } 第二步,对区间进行划分 两种区间的划分,对应两种写法 // 区间[l, r]被划分成[l, mid]和[mid + 1,
阅读全文
摘要:最长回文子串 标题 给你一个字符串 s,找到 s 中最长的回文子串。 样例 示例 1: 输入:s = "babad" 输出:"bab" 解释:"aba" 同样是符合题意的答案。 示例 2: 输入:s = "cbbd" 输出:"bb" 来源:力扣(LeetCode) 链接:https://leetco
阅读全文
摘要:《Agglomerative clustering of a search engine query log》 论文作者:Doug Beeferman 本文将解读此篇论文,此论文利用搜索日志中的<query,url>类型点击日志,实现忽略目标url内容,基于搜索词条用户的点击数据,聚合相关搜索和连接
阅读全文
摘要:leetcode题目 98. 验证二叉搜索树 前序遍历 最简洁的答案版本,由于先判断的是根节点,所以直接判断当前root的值v,是否满足大于左子树最大,小于右子树最小,然后再遍历左子树,右子树是否是这样 func isValidBST(root *TreeNode) bool { return df
阅读全文
摘要:876. 链表的中间结点 这道题要求我们找到链表中的中间位置,首先想到第一种方法,使用两个指针,一个从头遍历到尾部确定长度,一个从头遍历到相应位置。那么有没有一遍遍历就能解决的?那么我们想到快慢指针,因为快慢指针往往可以做到一遍遍历,在慢指针处找到答案 做法: 慢指针走一步,快指针走两步。这样快指针
阅读全文
摘要:关联题目 链表随机节点 一般语言提供了随机函数可以实现数的均等概率取,但是要考虑到本题目的链表无法直接标记,如果想直接使用下标,必然要花费空间存入数组。类推,如果是一个很大的文本流,无法在内存打开,那该如何是好? 于是,我们引入池塘抽样法(又称水塘抽样) 池塘抽样法 从S中抽取首k项放入「水塘」中
阅读全文
摘要:0-200的字典序 1 10 100 101 102 103 104 105 106 107 108 109 11 110 111 112 113 114 115 116 117 118 119 12 120 121 122 123 124 125 126 127 128 129 13 130 13
阅读全文