算法
scut_yp
积极乐观,热爱生活
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
动态规划(dynamic programming)之:triangle(三角形最小路径和)
题目一:求解三角形自上而下路径的最小值 (1)用分治方法来做, class Solution{ public: int minimumTotal(vector<vector<int> >& triangle) { if(triangle.size() <= 0) return -1; ...原创 2019-04-16 20:32:20 · 297 阅读 · 0 评论 -
用两个栈实现队列&&两个队列实现栈
做题之前,我们先来回顾一下“栈和队列的相同点以及不同点”,便于做题时的应用! 1.区别与联系 相同点:(1)栈和队列都是控制访问点的线性表; (2)栈和队列都是允许在端点处进行数据的插入和删除的数据结构; 不同点:(1)栈遵循“后进先出(LIFO)”的原则,即只能在该线性表的一头进行数据的插入和删除,该位置称为“栈顶”,而另外一头称为“栈底”;根据该特性,实现...转载 2019-04-22 10:58:31 · 256 阅读 · 0 评论 -
剑指offer之:抽象建模,位运算,
(1)二进制中1的个数 (2)打印从1到最大的n位数 (3)1-n整数中1出现的次数 (4)礼物的最大价值 (6)丑数 (7)n个筛子的点数 (8)扑克牌中的顺子 (9)圆圈中最后剩下的数字 (10)股票的最大利润 (11)求1+2+3+,,,,,+n; (12)不用加减乘除做加法 (13)构建乘积数组 ...原创 2019-04-21 20:17:46 · 236 阅读 · 0 评论 -
剑指offer之:动态规划、回溯、贪婪、
(1)矩阵中的路径 (2)机器人的运动 (3)剪绳子原创 2019-04-21 20:14:14 · 215 阅读 · 0 评论 -
剑指offer之:数组/数字处理(相关体题目)
(1)数组中重复的数字 (2)二维数组中的查找 (3)旋转数组的最小数字 (4)数值的整数次方 (5)调整数组顺序使奇数位于偶数前面 (6)顺时针打印矩阵 (7)数组中出现次数超过一般的数字 (8)最小的k个数 (9)数据流中的中位数 (10)连续子数组的最大和 (11)数字序列中某一位的数字 (12)把数组排成最小的数 (13)第一次只出现一次的字符 (14)数组中的逆...原创 2019-04-21 20:11:27 · 168 阅读 · 0 评论 -
剑指offer之:栈与队列(相关题目)
(1)用两个栈实现队列 (2)包含min函数的栈 (3)栈的压入,弹出序列 (4)队列的最大值原创 2019-04-21 20:06:31 · 162 阅读 · 0 评论 -
剑指offer之:字符串(相关题目)
(1)替换空格 (2)正则表达式匹配 (3)表示数值的字符串 (4)字符串的排列 (5)把数组翻译成字符串 (6)最长不含重复字符的子字符串 (7)第一个只出现一次的字符串 (8)翻转字符串 ...原创 2019-04-21 20:04:33 · 162 阅读 · 0 评论 -
剑指offer之:树(相关题目)
(1)重建二叉树 (2)二叉树的下一个节点 (3)树的子结构 (4)二叉树的镜像 (5)对称的二叉树 (6)从上到下打印二叉树 (7)二叉搜索树的后序遍历序列 (8)二叉树中和为某一值的路径 (9)二叉搜索树与双向链表 (10)序列化二叉树 (11)二叉搜索树的第K大节点 (12)二叉树的深度 ...原创 2019-04-21 20:02:11 · 149 阅读 · 0 评论 -
剑指offer之:链表(相关题目)
下面是剑指offer里面链表相关题目的总结 (1)从尾到头打印链表 (2)删除链表的节点 (3)链表中的倒数第K个节点 (4)链表中环的入口节点 (5)反转链表 (6)合并两个排序的链表 (7)复杂链表的复制 (8)二叉搜索树与双向链表 (9)两个链表的第一个公共节点 ...原创 2019-04-21 19:58:58 · 219 阅读 · 0 评论 -
动态规划(dynamic programming)之:edit-distance(word1变成word2的最小步骤数)
Given two words word1 and word2, find the minimum number of steps required to convert word1 to word2. (each operation is counted as 1 step.) You have the following 3 operations permitted on a word: In...原创 2019-04-16 22:44:18 · 401 阅读 · 0 评论 -
动态规划(dynamic programming)之:word-break(单词能否分解)
题解 单序列(DP_Sequence) DP 题,由单序列动态规划的四要素可⼤致写出: 1. State: f[i] 表⽰前 i 个字符能否根据词典中的词被成功分词。 2. Function: f[i] = or{f[j], j < i, letter in [j+1, i] can be found in dict} , 含义为⼩于 i 的索引 j 中只要有⼀个 f[j] 为真且 j...原创 2019-04-16 21:40:41 · 242 阅读 · 0 评论 -
动态规划(dynamic programming)之:climbing-stairs(青蛙跳台阶)
题⽬问的是到达顶端的⽅法数,我们采⽤序列类问题的通⽤分析⽅法,可以得到如下四要素: 1. State: f[i] 爬到第i级的⽅法数 2. Function: f[i]=f[i-1]+f[i-2] 3. Initialization: f[0]=1,f[1]=1 4. Answer: f[n] 尤其注意状态转移⽅程的写法,f[i]只可能由两个中间状态转化⽽来,⼀个是f[i-1],由f[i-1...原创 2019-04-16 21:06:53 · 241 阅读 · 0 评论 -
动态规划(dynamic programming)之:unique-paths(求路径总数)
(1)unique_paths 1 题⽬要求:给定m x n矩阵,求左上⻆到右下⻆的路径总数,每次只能向左或者向右前进。按照动态规 划中矩阵类问题的通⽤⽅法: 1. State: f[m][n] 从起点到坐标(m,n)的路径数⽬ 2. Function: f[m][n] = f[m-1][n] + f[m][n-1] 分析终点与左边及右边节点的路径数,发现从左边或者右 边到达终点的路径⼀...原创 2019-04-16 20:50:21 · 343 阅读 · 0 评论 -
动态规划(dynamic programming)之:minimum-path-sum
从数组的左上角到右下角,求经过的路径的最小和。 思路: (1)状态设定:f[x][y]为从坐标(0,0)走到(x,y)的最短路径和 (2)状态方程为:f[x][y] = (x,y) + min{f[x-1][y], f[x][y-1]}; (3)初始化:f[0][0] = grid[0][0];f[i][0] = sum(0,0 —> i,0);f[0][i] = sum(0,0...原创 2019-04-16 20:38:54 · 198 阅读 · 0 评论 -
哈希表之:two sum / three sum / four sum
1,two sum:返回数组里面两个数加起来等于给定值的数字的下标 思路:用哈希表来做,在这了直接用了STL中的map将数值与下标进行了映射 代码: classSolution{ public: vector<int>twoSum(vector<int>&numbers,inttarget){ vector<int&...原创 2019-04-18 15:46:08 · 497 阅读 · 0 评论
分享