司徒正美

Results 176 comments of 司徒正美

## 斐波那契数列 ```javascript function fib(n){ //由之前1个或几个项推导新的 var dp = new Uint16Array(n+1); //从1开始 dp[1] = dp[2] = 1; for(var i = 3; i

## 凑零钱问题 给你 k 种面值的硬币,面值分别为 c1, c2 ... ck,再给一个总金额 n,问你最少需要几枚硬币凑出这个金额,如果不可能凑出,则回答 -1 。 比如说,k = 3,面值分别为 1,2,5,总金额 n = 11,那么最少需要 3 枚硬币,即 11 = 5 + 5 + 1 。 假设dp[i]表示凑够i元所需要的最少硬币数,一共有n种面值硬币,那么>dp[i]=min(dp[i−coins[0]],dp[i−coins[1]],...dp[i−coins[k])+1,其中coins[k]

https://zhuanlan.zhihu.com/p/35707293

## 377. Combination Sum IV Given an integer array with all positive numbers and no duplicates, find the number of possible combinations that add up to a positive integer target....

在走完最后一个房间的时候血量至少要剩下1,因此最后的状态可以当成是初始状态,由后往前依次决定在每一个位置至少要有多少血量,这样一个位置的状态是由其下面一个和和左边一个的较小状态决定 。因此一个基本的状态方程是: `dp[i][j] = min(dp[i+1][j], dp[i][j+1]) - dungeon[i][j]` 。 但是还有一个条件就是在每一个状态必须血量都要大于1,因此我们还需要一个方程在保证在每一个状态都大于1,即:`dp[i][j] = max(dp[i][j], 1)`; 也就是说虽然当前的血量到最后能够剩下1,但是现在已经低于1了,我们需要为其提升血量维持每一个状态至少都为1。 方案1 ```javascript function calculateMinimumHP(dungeon) { var m = dungeon.length, n = dungeon[0].length var dp = new...

http://g.tbcdn.cn/mtb/??lib-env/1.4.1/env.debug.js ml判定浏览器的脚本 ``` javascript ;(function(win, lib) { lib.env = lib.env || {}; function Version(string){ Object.defineProperty(this, 'val', { value: string.toString(), enumerable: true }); this.gt = function(v) { return Version.compare(this, v) >...

移动web前端小结(一)http://www.cnblogs.com/xiaolu-web/p/4372279.html

## KMP ```javascript //保存的是前缀的起始位置,因此又叫前缀数组, //又因为它只在失配时才使用,因此又叫失配数组 function getMaxLength(pattern) { var table = [0],////只有一个字符肯定不匹配 i = 1,//最大后缀字符串从1开始 j = 0,//前缀的指针 pLen = pattern.length while (i < pLen) { if (pattern[i] == pattern[j])...