随笔分类 - 算法
算法基础,题解等
摘要:一、 STL函数 lower_bound() 试图在已排序的 [first, last) 中寻找元素 value。返回一个迭代器,指向第一个“不小于 value”的元素,如果 value 大于 [first, last)内的任何一个元素,则返回 last。实际上,它返回“在不破坏顺序的情况下,可插入
阅读全文
摘要:一、哈夫曼树 1. 哈夫曼树也称最优二叉树。 叶子节点的权值是对叶子节点赋予的一个有意义的数值量。 设二叉树具有 n 个带权值的叶子结点,从根节点到各个叶子结点的路径长度与相应叶子结点权值的乘积之和叫做二叉树的带权路径长度。 给定一组具有确定权值的叶子结点,可以构造处不同的二叉树,将其中带权路径长度
阅读全文
摘要:Implement atoi to convert a string to an integer. Hint: Carefully consider all possible input cases. If you want a challenge, please do not see below
阅读全文
摘要:The string "PAYPALISHIRING" is written in a zigzag pattern on a given number of rows like this: (you may want to display this pattern in a fixed font
阅读全文
摘要:Manacher's Algorithm针对的是最长回文子串问题。对于此问题,最直接的方法是遍历每一个元素,遍历过程中以每一个字符为中心向两边扩展以寻找此字符为中心的最长回文子串。复杂度O(n2)。Manacher算法将时间复杂度降至O(n),关键点在于将奇偶字串统一成奇数字串。 方法是在每一个字符
阅读全文
摘要:Given a string s, find the longest palindromic substring in s. You may assume that the maximum length of s is 1000. Example: Example: 题解: Solution 1 暴
阅读全文
摘要:Given a string, find the length of the longest substring without repeating characters. Examples: Given "abcabcbb", the answer is "abc", which the leng
阅读全文
摘要:节点定义如下 前序遍历: 若二叉树为空,则空操作返回,否则: 中序遍历: 若二叉树为空,则空操作返回,否则: 后序遍历: 若二叉树为空,则空操作返回,否则: 层序遍历: 其中后序遍历可以看作是和前序遍历是对称的,所以从根节点开始先遍历右子树,再遍历左子树,不过要把最后的遍历输出翻转过来。所以后序遍历
阅读全文
摘要:之前谈的都是查找某个特定值,这里主要是谈论最小化最大值和最大化最小值问题。二分问题最容易搞错的就是终止条件,区间形式,返回lb还是ub或者需不需要再加减一。这里列出了模板 一:整型数二分 1.最小化最大值问题 形式一:(ub - lb) > 1 区间为 (lb, ub] 结果为 ub 形式二: (u
阅读全文
摘要:本文参考了《挑战程序设计竞赛》和Jennica的github题解代码 模板 数组版: 结构体版: 例题 例1 POJ 1182(带权并查集/种类并查集) 解题思路: 这个题是非常经典的并查集问题(种类并查集)。并查集作用:查询a和b是否属于同一组;合并a和b所在的组。注意并查集无法进行分割操作。利用
阅读全文
摘要:1.poj 1742 Description People in Silverland use coins.They have coins of value A1,A2,A3...An Silverland dollar.One day Tony opened his money-box and f
阅读全文
摘要:背包问题无疑是最经典的dp问题,其次就是关于字符串匹配问题,数组最长递增(减)序列长度等等。背包问题变体很多。以下内容多为摘抄。(from 崔添翼背包九讲) 动态规划问题实际上与备忘录式深搜有些类似。 1. 0-1背包 1.1 题目描述 题目: 有n个重量和价值分别为wi, vi的物品。从这些物品中
阅读全文
摘要:题目: Given an unsorted array of integers, find the number of longest increasing subsequence. Example 1: Example 2: 题解: 首先解决最长的递增序列问题,最朴素的做法是深搜,以每一个数为开头
阅读全文
摘要:摘自《程序员代码面试指南》 题目: 给定数组 arr 和整数 num, 共返回有多少个⼦数组满⾜如下情况:max(arr[i...j]) - min(arr[i...j]) <= nummax(arr[i...j])表示⼦数组 arr[i...j]中的最⼤值,min(arr[i...j])表示⼦数组
阅读全文
摘要:单调栈 单调栈,就是一个栈,里面的元素满足一定的单调性。(多见于单调增/单调减) 1)新元素加入栈前,会在栈顶端把破坏栈单调性的元素都删除,直到栈为空或者栈满足单调性才能加入新元素。 2)单调栈是 O(n) 级的时间复杂度,所有元素只会进入栈一次,并且出栈后再也不会进栈。 3)单调栈可以找到元素向左
阅读全文
摘要:题目: Given a 2D binary matrix filled with 0's and 1's, find the largest rectangle containing only 1's and return its area. For example, given the follo
阅读全文
摘要:题目: Given n non-negative integers representing the histogram's bar height where the width of each bar is 1, find the area of largest rectangle in the
阅读全文
摘要:转自九章算法公众号 题目描述 给出包含n个整数的数组,你的任务是检查它是否可以通过修改至多一个元素变成非下降的。一个非下降的数组array对于所有的i(1<=i<n)满足array[i-1]<=array[i]。n属于区间[1,10000]。 样例1: ⅰ 输入: [4,2,3] ⅱ 输出: Tru
阅读全文
摘要:■題目描述现在信用卡开展营销活动,持有我行信用卡客户推荐新户办卡,开卡成功后可获得积分奖励。规定每个客户最多可推荐两个新户且一个新户只能被推荐一次。但允许链接效应,即若客户A推荐了新户B,新户B推荐新户C,则客户同时属于A和B的推荐列表。简单起见,只考虑一个老客户A作起点推荐的情况。编程计算推荐新户
阅读全文
摘要:转载自九章算法(地址) 题目: 假设s是一个无限循环的字符串”abcdefghijklmnopqrstuvwxyz”,s就是一个”...zabcdefghijklmnopqrstuvwxyza...”这样的字符串,现在给你另外一个字符串p,求p中存在多少个截然不同的子串,使得它们也是s的子串。p只包
阅读全文