-
排列組合公式
image
image -
數(shù)據(jù)結構圖
深度遍歷節(jié)點(Depth First Search)
function searchByDepth(root) {
// doSomething(root)
var children = node.children
for (var i = 0; i < children.length; i++) {
arguments.callee(children[i])
}
}
- 廣度遍歷節(jié)點 (Breadth First Search)
function searchByBreadth(root) {
// 維護一個先進先出的隊列
var queue = [root]
while (queue.length) {
var node = queue.shift()
// doSomething(root)
queue.push(...node.children)
}
}
- 隨機數(shù)組——洗牌算法
function shuffle(arr) {
let i = arr.length;
while (i) {
let j = Math.floor(Math.random() * i--); // 這個分號很重要,原理同自執(zhí)行函數(shù)
[arr[j], arr[i]] = [arr[i], arr[j]]
}
}
- 數(shù)組中3個數(shù)乘積最大
// MAX1 * MAX2 * MAX3 || MIN1 * MIN2 * MAX1 這個公式最重要
function maxProduct (arr) {
arr.sort((a, b) => {
return a - b > 0
})
let len = arr.length
let res1 = arr[len - 1] * arr[len - 2] * arr[len - 3]
let res2 = arr[0] * arr[1] * arr[len - 1]
return Math.max(res1, res2)
}
- 尋找連續(xù)數(shù)組中的缺失數(shù)
// 高斯定理求理論之和趟庄,與數(shù)組真實之和作差
function findMissingNumber(arr) {
let len = arr.length + 1
let min = arr[0]
let max = arr[0]
let total = 0
total = arr.reduce( (prev, next, a, c) => {
max = next > max ? next : max
min = next < min ? next : min
return prev + next
})
return (min + max) * len / 2 - total
}
- 隨機數(shù)生成算法——線性同余法
// 絕對的隨機是不存在的(據(jù)說量子力學除外),代碼生成的隨機都是“偽隨機”
var random = (function () {
// 種子越隨機启上,結果越~
// 此處用系統(tǒng)時間作為種子,也可以用主板溫度,顯卡噪音~你開心就好
var seed = new Date().getTime()
// 9301 49297 233280是線性同余法常用的一組參數(shù)
// (X % M) / M 保證了隨機數(shù)介于[0,1)區(qū)間
function rd (seed) {
seed = ( seed * 9301 + 49297 ) % 233280
return seed / 233280
}
return function (num) {
return rd(seed) * (num || 1)
}
})()
- Fibonacci數(shù)列
// 數(shù)學歸納法
function fibonacci(n) {
if (n < 2) {
return n
}
return fibonacci(n - 1) + fibonacci(n - 2)
}
// 求和 前n項和等于第n+2項減1
function sum_fibonacci (n) {
return fibonacci(n + 2) - 1
}
// 構造斐波拉契數(shù)列
function new_fibonacci(n) {
const arr = []
if (n === 1) {
arr.push(1)
} else if (n > 0) {
arr.push(1, 1)
while (n - 2) {
const len = arr.length
arr.push(arr[len - 2] + arr[len-1])
n--
}
}
return arr
}