算法
LeetCode 746. Min Cost Climbing Stairs
LeetCode 746. Min Cost Climbing Stairs 题目:爬楼梯,可以选择爬一级或者两级,每一级需要消耗的能量存储在cost数组中,可以选择从第一级或者第二级开始爬,求最小的能量消耗是多少。 思路: 非常简单的一道动归题目,只需要用到缓存,就能直接解决了。唯一我用到的一个技 阅读更多…
前端
Node Cluster
众所周知,Nodejs是单线程运行的,这也是它经常被吐槽的一个点。针对这个点,Node推出了Cluster这个模块,用于创建多进程的Node应用。 基础使用 Cluster的基本使用方法就是cluster.fork(),这样就能直接创建一个新的进程。进程使用有完全独立的数据空间,堆栈等。这个时候我们 阅读更多…
算法
LeetCode 10. Regular Expression Matching
题目:实现正则表达式的.和*两个符号。 思路:第一时间看到正则,马上就想到了用while来不停匹配。后来遇到了a*a匹配aa,发现要处理贪心和不贪心多种情况,所以将while转为了递归。 题目考察的多是递归的设计和考虑多种情况是否周全,代码很少(JS实现): var isMatch = functi 阅读更多…
算法
LeetCode 650. 2 Keys Keyboard
题目:初始化字符只有一个A,现在有两种操作:1.复制当前所有字符。2.粘贴。使用这两种操作得到n个A字符,求最少的步数。 思路:我是在dp的tag下找到的这个题目,但是我发现最简单的解法应该直接使用贪心算法就可以了。 要得到n个A字符,可以认为最少的步数肯定是通过粘贴最多的字符来得到的,那么反推就能 阅读更多…
算法
LeetCode 689. Maximum Sum of 3 Non-Overlapping Subarrays
题目:给定一个数组nums,给定一个整数k,求数组内k长度的子串和最大的3个子串位置。(位置不可重复,结果数字序要求最小) 比如: Input: [1,2,1,2,6,7,5,1], 2 Output: [0, 3, 5] 最大为 [1, 2] [2, 6] [7, 5]的和 思路:看到带3的题目, 阅读更多…
算法
LeetCode 714. Best Time to Buy and Sell Stock with Transaction Fee
题目:给定一个股票价格数组prices,标记了每天股票的价格,还有一个股票买卖手续费fee。求交易最大利润。 比如: Input: prices = [1, 3, 2, 8, 4, 9], fee = 2 Output: 8 思路:动态规划,使用两个变量分别记录当前购买股票hold和售出股票cash 阅读更多…