![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法
chavinchen
肩挑凡事,拳握初心~
展开
-
银行家算法-解析与编码(Java实现)
银行家算法Banker’s Algorithm是一个避免Deadlock的算法,是由艾兹格·迪杰斯特拉在1965年为T.H.E系统设计。算法背景在银行中,客户申请贷款的数量是有限的,每个客户在第一次申请贷款时要声明完成该项目所需的最大资金量,在满足所有贷款要求时,客户应及时归还。银行家在客户申请的贷款数量不超过之前声明的最大值时,都应尽量满足更多客户的需要。可以看到关键字:资金不能无...原创 2020-02-03 00:35:30 · 424 阅读 · 0 评论 -
【题解】LeetCode-最长回文子串(longest-palindromic-substring)、Z 字形变换(zigzag-conversion)、整数反转(reverse-integer)
最近换工作有点忙,刷题也不积极了~5. 最长回文子串给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为 1000。示例 1:输入: “babad”输出: “bab”注意: “aba” 也是一个有效答案。示例 2:输入: “cbbd”输出: “bb”思路根据要求有两个点:长度最长回文串所以不妨假设存在这一的一个子串,逆序枚举长度,一旦其是回文,...原创 2019-04-06 00:14:28 · 308 阅读 · 0 评论 -
【题解】LeetCode-字符串转换整数 (atoi)(string-to-integer-atoi)
8. 字符串转换整数 (atoi)请你来实现一个 atoi 函数,使其能将字符串转换成整数。首先,该函数会根据需要丢弃无用的开头空格字符,直到寻找到第一个非空格的字符为止。当我们寻找到的第一个非空字符为正或者负号时,则将该符号与之后面尽可能多的连续数字组合起来,作为该整数的正负号;假如第一个非空字符是数字,则直接将其与之后连续的数字字符组合起来,形成整数。该字符串除了有效的整数部分之后也可...原创 2019-04-11 22:55:58 · 167 阅读 · 0 评论 -
【题解】LeetCode-正则表达式匹配(regular-expression-matching)
10. 正则表达式匹配给定一个字符串 (s) 和一个字符模式 §。实现支持 ‘.’ 和 ‘*’ 的正则表达式匹配。‘.’ 匹配任意单个字符。‘*’ 匹配零个或多个前面的元素。匹配应该覆盖整个字符串 (s) ,而不是部分字符串。说明:s 可能为空,且只包含从 a-z 的小写字母。p 可能为空,且只包含从 a-z 的小写字母,以及字符 . 和 *。示例 1:输入:s = “aa”...原创 2019-04-20 18:09:23 · 187 阅读 · 0 评论 -
【题解】LeetCode-盛最多水的容器(container-with-most-water)
11. 盛最多水的容器给定 n 个非负整数 a1,a2,…,an,每个数代表坐标中的一个点 (i, ai) 。在坐标内画 n 条垂直线,垂直线 i 的两个端点分别为 (i, ai) 和 (i, 0)。找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。说明:你不能倾斜容器,且 n 的值至少为 2。图中垂直线代表输入数组 [1,8,6,2,5,4,8,3,7]。在此情况下,容...原创 2019-05-04 20:27:57 · 142 阅读 · 0 评论 -
【题解】LeetCode-最长公共前缀(longest-common-prefix)
14. 最长公共前缀编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串 “”。示例 1:输入: [“flower”,“flow”,“flight”]输出: “fl”示例 2:输入: [“dog”,“racecar”,“car”]输出: “”解释: 输入不存在公共前缀。说明:所有输入只包含小写字母 a-z 。思路比较直观的做法:遍历一次列表,每...原创 2019-05-04 20:36:30 · 177 阅读 · 0 评论 -
【题解】LeetCode-整数转罗马数字(integer-to-roman)、罗马数字转整数(roman-to-integer)
12. 整数转罗马数字罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。字符 数值I 1V 5X 10L 50C 100D 500M 1000例如, 罗马数字 2 写做 II ,...原创 2019-05-04 20:43:40 · 205 阅读 · 0 评论 -
【题解】LeetCode-三数之和(3sum)
15. 三数之和给定一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?找出所有满足条件且不重复的三元组。注意:答案中不可以包含重复的三元组。例如, 给定数组 nums = [-1, 0, 1, 2, -1, -4],满足要求的三元组集合为:[[-1, 0, 1],[-1, -1, 2]]思路转化等式:b+...原创 2019-05-04 20:57:32 · 226 阅读 · 0 评论 -
【题解】LeetCode-回文数(palindrome-number)
9. 回文数判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。示例 1:输入: 121输出: true示例 2:输入: -121输出: false解释: 从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。示例 3:输入: 10输出: false解释: 从右向左读, 为 01 。因此它不是一个回文数。进...原创 2019-04-20 15:52:22 · 373 阅读 · 0 评论 -
【题解】表达式求值的两种解法(Java版) - 二叉树|双栈结构
表达式求值求一个非负整数四则混合运算且含嵌套括号表达式的值。如:# 输入:1+2*(6/2)-4# 输出:3.0数据保证:保证表达式合法(含除数不为0)。保证运算数是非负整数。双栈版维护两个栈: 符号栈,数字栈,遍历输入串过程中计算数字直接入栈符号入栈a. 符号栈为空b. 当前符号优先于栈顶符号c. 栈顶为’(’符号出栈计算: 栈顶符号非’(’ 且 优先级更...原创 2019-07-16 14:01:26 · 516 阅读 · 0 评论 -
【题解】LeetCode-寻找两个有序数组的中位数(median-of-two-sorted-arrays)
4. 寻找两个有序数组的中位数给定两个大小为 m 和 n 的有序数组 nums1 和 nums2。请你找出这两个有序数组的中位数,并且要求算法的时间复杂度为 O(log(m + n))。你可以假设 nums1 和 nums2 不会同时为空。示例 1:nums1 = [1, 3]nums2 = [2]则中位数是 2.0示例 2:nums1 = [1, 2]nums2 = [3, ...原创 2019-03-31 23:37:01 · 308 阅读 · 0 评论 -
【题解】LeetCode-无重复字符的最长子串(longest-substring-without-repeating-characters)
3.无重复字符的最长子串给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。示例 1:输入: “abcabcbb”输出: 3解释: 因为无重复字符的最长子串是 “abc”,所以其长度为 3。示例 2:输入: “bbbbb”输出: 1解释: 因为无重复字符的最长子串是 “b”,所以其长度为 1。示例 3:输入: “pwwkew”输出: 3解释: 因为无重复字符的...原创 2019-03-26 00:14:09 · 316 阅读 · 0 评论 -
【算法】二叉树重建
重建二叉树,有两种情况:由先序,中序求后序由后序,中序求先序因为中序的存在用作划分左右子树, 代码中应用了串的长度来划分子树模拟一遍就是:1. pre[]="ABDGHCEFI" , in[ ]="GDHBAECIF";pre[0]就是根,在in中可知A的下标p为4; GDHBAECIF 红色部分是左子树,紫色部分是右子树左子树长度为4,那么pre+1到p...原创 2015-10-30 19:14:12 · 497 阅读 · 0 评论 -
【算法】二叉树的序遍历
递归和非递归的深度遍历; 采用了重定向;当前路径下需要一个tree.txt内容为ABDG##H###CE##FI### 注释中也有,文本内容用做树的建立测试树的形态应该是: #include<iostream>#include<ctime>#include<cstdio>using namespace std;...原创 2015-10-30 10:41:30 · 533 阅读 · 0 评论 -
【算法】几个经典递推关系记录
递推关系数学味很重(貌似很多都是直接有公式的),不过很多记忆搜索或者dp的状态转移都是要自己推理的,记录几个俗爆炸的递推关系...文科生学计算机......我呵呵一脸 :(Fibonacci这个很常见,第一次刷题愣是没找出来...觉得特难(文科生的悲哀)!目前见过的有 : 兔子生兔子(竟然全是母的还都有孕)母牛生小牛 ; 超级楼梯(一次爬一阶或者两阶) ; 蜜蜂的巢等总之模型大...原创 2016-03-19 16:11:16 · 1435 阅读 · 0 评论 -
【算法】初探动态规划
笔者初识dp还是度娘引见的(辣鸡的学校没有algorithm~)当下是个资源丰富的时代,基本上各种书上面都有介绍动态规划的概念(然而从来没看懂过...)记得当初写过一道整数划分的题目,TLE没过,同级的一哥们发了一份代码,一个循环~~~当时我的一脸感激,然而内心是崩溃的: What FUCK This !? 个人觉得认识dp之前你应该先知道: 递推 , 搜索 , 记忆化搜索 ...原创 2016-03-15 21:38:32 · 904 阅读 · 0 评论 -
【题解】网易秋招编程题.2017
1. 如果一个数字序列逆置之后跟原序列是一样的就称这样的数字序列为回文序列。例如:{1, 2, 1}, {15, 78, 78, 15} , {112} 是回文序列, {1, 2, 2}, {15, 78, 87, 51} ,{112, 2, 11} 不是回文序列。现在给出一个数字序列,允许使用一种转换操作:选择任意两个相邻的数,然后从序列移除这两个数,并用这两个数字的和插入到这两个数之前的位...原创 2016-11-29 01:21:30 · 938 阅读 · 0 评论 -
【算法】出栈序列统计-统计N个元素进入栈容量为M的所有出栈序列数
这么说吧,网上的解释看着蛋疼,同一道题竟然每个页都是同一个答案?看题: 求有容量限制的栈的出栈序列统计题目描述 栈是常用的一种数据结构,它有两种操作:将一个元素进栈push和将栈顶元素弹出pop。现在有一个容量为m的栈S,有n个元素在栈S顶端一侧等待进栈,另一侧是出栈序列。现在要使用push和pop这两种操作,由一个操作序列可以得到一系列的输出序列。请你编程求出对于给定的...原创 2016-11-25 15:49:41 · 2120 阅读 · 1 评论 -
【数据结构】基础数据结构和算法
搜索DFS 深搜方向:叶子数量级1.排列级P(m,n)=m!/(m-n)! int vis[n];dfs(int k){ if(k==n){ //执行P(m,n)次 return; } for(int i=0; i < n; i++) if(vis[i]){ vis[i]=1; dfs(k+1);原创 2017-12-19 20:48:02 · 343 阅读 · 0 评论 -
【题解】LeetCode-两数之和(two-sum)
已经很久没有写题解了,上次面对一道表达式求值都写了半天而且最后效果也不是很理想。看来没事这个技能还是要点一点的,不然很容易会失去它。换一个比较适合职场上的人刷题的平台,以后有时间就刷一刷~好久没用C++,发现用C++刷不动了,尴尬,Java将就一下吧,反正刷题这种事情差不大啦~第一题:两数之和给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 ...原创 2019-03-17 21:17:34 · 332 阅读 · 0 评论 -
【题解】LeetCode-两数相加(add-two-numbers)
2.两数相加给出两个 非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字。如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。您可以假设除了数字 0 之外,这两个数都不会以 0 开头。示例:输入:(2 -&amp;gt; 4 -&amp;gt; 3) + (5 -&amp;gt; 6 -&amp;gt; 4)输出:7 -&amp;g原创 2019-03-17 22:53:11 · 225 阅读 · 0 评论 -
【算法】线索二叉树
建立二叉树 : 示例输入ABDGK##L##H#M###CE##FINP##Q###JO#R###三种序的结果应该是:pre:A B D G K L H M C E F I N P Q J O Rin :K G L D H M B A E C P N Q I F O R Jpos:K L G M H D B E P Q N I R O J F C A 先序线索化 -...原创 2015-11-15 17:15:18 · 550 阅读 · 0 评论