javascript-算法基础-01

news/2024/11/8 3:02:29/
  1. 时间复杂度 O(1) O(n) O(n²) O(2ⁿ)

记得有次面试, 让我求1 + … n, 我说用for循环. 当时竟然都忘了等差数列公式了…

一个简单的求和

let res = 0                       // 1
for(let i; i < arr.length; i++){  // 1res += arr[i]                 // n
}let res = 0
for(const item of number){   比上面的更简洁, 但似乎不能breakres += item
}
num.reduce((a, b) => a + b) 归并,当时时间复杂度并没有降低

2*n => n


  1. what & why
  2. Examples & Different Algorithms
  3. Different Solution Approaches: Recursion, , Greedy Algorithms (how to tackle and solve problems)

Basics & Time Complexity 基础 和 时间复杂度

Math Algorithms 数学算法

Recursion & Dynamic Programming 递归和动态编程

Search Algorithms 搜索算法

Sorting Algorithms 排序

Space Complexity

Sets(Arrays) Algorithms

More Complex Algorithms & A Blueprint

leetcode 509 斐波那契数列

解法1, 递归, 最简单, 性能最差

O(2²)
function fib(n) {if (n < 2) {return n}return fib(n - 1) + fib(n - 2)
}

解法2 递归 + 数组记录, O(n) Bottom-up Approach

let arr = [0, 1, 1] 
function getFib(n) {if (n <= 2) return arr[n]return arr[n] = getFib(n - 1) + getFib(n- 2)
}console.log(getFib(20))

在这里插入图片描述

感觉这种是最好理解的

var fib = function (n) {let arr = [0, 1, 1]for(let i = 3; i <= n; i++){arr[i] = arr[i - 1] + arr[i - 2]}return arr[n]
};

不用数组, 用变量倒

let fib = function (n) {let arr = [0, 1, 1]if (n < 2) return arr[n]// 分别代表 dp[i - 1] 和 dp[i - 2]let dp_i_1 = 1, dp_i_2 = 0for (let i = 2; i <= n; i++) {// dp[i] = dp[i - 1] + dp[i - 2];const dp_i = dp_i_1 + dp_i_2dp_i_2 = dp_i_1dp_i_1 = dp_i}return dp_i_1};

leetcode 866. 回文素数

素数

var primePalindrome = function(n) {if(n === 1) return 2let max = 12 * Math.pow(10,8)for(let i = n; i < max; i++) {if(isH(i) && isPrime(i)) {return i}}// 判断是不是素数function isPrime(v){for(let i = 2; i <= Math.sqrt(v); i ++){if(v % i === 0){return false}}return true}function isPalindrome(v) {let str = String(v)let l = 0,r = str.length - 1while (l < r) {if (str[l] !== str[r]) return falsel++r--}return true}
};
卡在了 9989900 超时了....
Math.min(1,2,3)
Math.max(1,2,3)

leetcode 231. 2的幂 isPowerOfTwo

  1. & 是全 1 才为 1
  2. 5 & 12 => 4
    0101 => 5
    1100 => 12
    0100 => 4
一个数如果是 2 的指数,那么它的二进制表示一定只含有一个 1。位运算 n&(n-1) 在算法中挺常见的,作用是消除二进制表示中的最后一个 1,可以判断 2 的指数。
/*** @param {number} n* @return {boolean}*/
var isPowerOfTwo = function(n) {if(n < 1) return falsereturn (n & (n - 1)) == 0;
};
var isPowerOfTwo = function(n) {let divide = nwhile(divide !== 1) {if(divide %2 !== 0) return  falsedivide = divide / 2}return true
};

阶乘 54321

recurive 递归写法 O(n)
function factorail() {if(number === 1) {return 1}return number * factorial(number - 1)
}
performance.now()

参考

bilibili视频


http://www.ppmy.cn/news/56400.html

相关文章

设计模式中职责链 chain of responsibility案例举例

JAVA实现案例 职责链&#xff08;Chain of Responsibility&#xff09;模式是一种行为型模式&#xff0c;它将请求从发送者和接收者解耦&#xff0c;通过沿着一个链传递请求&#xff0c;使得可以多个对象都有机会处理请求。下面是一个简单的JAVA实现职责链模式的例子&#xff…

从训练数据视角:看机器学习和深度学习的大三范式

从训练数据视角&#xff1a;机器学习和深度学习 “模型”的大三范式 训练数据一般分为两个部分&#xff0c;一部分是数据本身&#xff0c;一部分是标注(Label)。训练是通过数据对应的标注&#xff0c;让模型理解数据。 1.监督学习 即训练直接输入数据和对应的标注&#xff0…

中国社会科学院大学与美国杜兰大学金融管理硕士——只要出发就会顺利抵达彼岸

新的地方会发生新的故事&#xff0c;新的相遇会碰撞出新的火花。只要出发&#xff0c;我们就会顺利抵达我们想去的远方。就像选择在社科院杜兰大学金融管理硕士项目读研的我们&#xff0c;在这里与来自全国各地的精英同学相聚&#xff0c;共享行业前沿资讯&#xff0c;聆听名师…

智能算法系列之基于粒子群优化的模拟退火算法

文章目录 前言1. 算法结合思路2. 问题场景2.1 Sphere2.2 Himmelblau2.3 Ackley2.4 函数可视化 3. 算法实现代码仓库&#xff1a;IALib[GitHub] 前言 本篇是智能算法(Python复现)专栏的第四篇文章&#xff0c;主要介绍粒子群优化算法与模拟退火算法的结合&#xff0c;以弥补各自…

C#开发的OpenRA游戏的加载地图流程

C#开发的OpenRA游戏的加载地图流程 OpenRA游戏里,地图是一个很关键的数据, 因为地图里包括了地面状态,地面上建筑物状态, 还有玩家在地图上的布局情况,以及各种活动限制的条件。 在OpenRA里,需要把地图目录:OpenRA\mods\cnc\maps 里所有的文件进行加载, 并且保存在缓…

IDEA 使用系列之 Alibaba Cloud Toolkit 一件部署

一、前文 做开发&#xff0c;免不了要往服务器部署前端后端&#xff0c;首先要用xftp把前后端所在文件夹打开&#xff0c;把jar、dist备份再上传&#xff0c;然后再打开xshell把前后端kill掉&#xff0c;然后再敲命令重新启动前后端&#xff0c;少则2、3分钟&#xff0c;多则10…

使用BP神经网络和Elman Net预测航班价格(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

ESP32-硬件IIC读取温湿度传感器SHT30

简介 esp32 使用硬件I2C读取温湿度传感器SHT30,例程基于EDP-IDF-4.4.X 的I2C Simple Example 例程修改 工程创建 打开 VSCODE ,通过 查看-- 命令面板&#xff08;快捷键CtrlShiftP&#xff09;&#xff0c;打开 ESP-IDF 的例程后&#xff0c;选择 i2c_simple 例程&#xff0…