算法
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 · 230 阅读 · 0 评论 -
用两个栈实现队列&&两个队列实现栈
做题之前,我们先来回顾一下“栈和队列的相同点以及不同点”,便于做题时的应用!1.区别与联系相同点:(1)栈和队列都是控制访问点的线性表;(2)栈和队列都是允许在端点处进行数据的插入和删除的数据结构;不同点:(1)栈遵循“后进先出(LIFO)”的原则,即只能在该线性表的一头进行数据的插入和删除,该位置称为“栈顶”,而另外一头称为“栈底”;根据该特性,实现...转载 2019-04-22 10:58:31 · 203 阅读 · 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 · 139 阅读 · 0 评论 -
剑指offer之:动态规划、回溯、贪婪、
(1)矩阵中的路径(2)机器人的运动(3)剪绳子原创 2019-04-21 20:14:14 · 159 阅读 · 0 评论 -
剑指offer之:数组/数字处理(相关体题目)
(1)数组中重复的数字(2)二维数组中的查找(3)旋转数组的最小数字(4)数值的整数次方(5)调整数组顺序使奇数位于偶数前面(6)顺时针打印矩阵(7)数组中出现次数超过一般的数字(8)最小的k个数(9)数据流中的中位数(10)连续子数组的最大和(11)数字序列中某一位的数字(12)把数组排成最小的数(13)第一次只出现一次的字符(14)数组中的逆...原创 2019-04-21 20:11:27 · 126 阅读 · 0 评论 -
剑指offer之:栈与队列(相关题目)
(1)用两个栈实现队列(2)包含min函数的栈(3)栈的压入,弹出序列(4)队列的最大值原创 2019-04-21 20:06:31 · 120 阅读 · 0 评论 -
剑指offer之:字符串(相关题目)
(1)替换空格(2)正则表达式匹配(3)表示数值的字符串(4)字符串的排列(5)把数组翻译成字符串(6)最长不含重复字符的子字符串(7)第一个只出现一次的字符串(8)翻转字符串...原创 2019-04-21 20:04:33 · 113 阅读 · 0 评论 -
剑指offer之:树(相关题目)
(1)重建二叉树(2)二叉树的下一个节点(3)树的子结构(4)二叉树的镜像(5)对称的二叉树(6)从上到下打印二叉树(7)二叉搜索树的后序遍历序列(8)二叉树中和为某一值的路径(9)二叉搜索树与双向链表(10)序列化二叉树(11)二叉搜索树的第K大节点(12)二叉树的深度...原创 2019-04-21 20:02:11 · 106 阅读 · 0 评论 -
剑指offer之:链表(相关题目)
下面是剑指offer里面链表相关题目的总结(1)从尾到头打印链表(2)删除链表的节点(3)链表中的倒数第K个节点(4)链表中环的入口节点(5)反转链表(6)合并两个排序的链表(7)复杂链表的复制(8)二叉搜索树与双向链表(9)两个链表的第一个公共节点...原创 2019-04-21 19:58:58 · 161 阅读 · 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 · 342 阅读 · 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 · 180 阅读 · 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]=14. Answer: f[n]尤其注意状态转移⽅程的写法,f[i]只可能由两个中间状态转化⽽来,⼀个是f[i-1],由f[i-1...原创 2019-04-16 21:06:53 · 156 阅读 · 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 · 276 阅读 · 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 · 133 阅读 · 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 · 426 阅读 · 0 评论