
数据结构&算法
柒月梦
不忘初心,方得始终。
有问题可以邮箱 15755881430@163.com
展开
-
针对不同数据结构和算法的专题训练(二)
1、动态规划1.1 322.零钱兑换var coinChange = function(coins, amount) { if(amount===0) return 0; const dp = Array(amount+1).fill(Number.MAX_VALUE) dp[0] = 0; for (let i = 1; i < dp.length; i++) { for (let j = 0; j < coins.length; j++) {原创 2020-08-04 09:18:56 · 379 阅读 · 0 评论 -
针对不同数据结构和算法的专题训练(一)
1、数组1.1 11. 盛最多水的容器题解:左右两个指针移动,算出其中的面积,最大的就是结果。实现var maxArea = function (height) { if (!height || height.length<=1) return 0 let left = 0,right = height.length-1;//左右两个指针 let max = 0;//最大值 while (left<right) { // 计算原创 2020-06-01 11:16:16 · 724 阅读 · 0 评论 -
LeetCode刷题(JavaScript版)--04
1、二叉树的后序遍历。原题145给定一个二叉树,返回它的 后序 遍历。示例:输入: [1,null,2,3] 1 \ 2 / 3 输出: [3,2,1]题解:/** * Definition for a binary tree node. * function TreeNode(val) { * this.val = val...原创 2020-02-06 17:45:58 · 187 阅读 · 0 评论 -
LeetCode刷题(JavaScript版)--03
1、移除链表元素原题203删除链表中等于给定值 val 的所有节点。示例:输入: 1->2->6->3->4->5->6, val = 6输出: 1->2->3->4->5解题:/** * Definition for singly-linked list. * function ListNode(val) { * ...原创 2020-02-06 17:13:04 · 311 阅读 · 0 评论 -
LeetCode刷题(JavaScript版)--02
1、有效的括号原题【第20题】给定一个只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字符串,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。注意空字符串可被认为是有效字符串。示例 1:输入: "()"输出: true示例 2:输入: "()[]{}"输出: true示例 3:输入: "(]"输出: f...原创 2020-01-31 22:04:50 · 268 阅读 · 1 评论 -
LeetCode刷题(JavaScript版)--01
1、两数之和原题给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。示例:给定 nums = [2, 7, 11, 15], target = 9因为 nums[0] + nums[1] = 2 + 7 = 9所以返回 [0, 1]...原创 2020-01-19 15:30:58 · 418 阅读 · 0 评论 -
数据结构与算法学习四(基于JavaScript)----树
树是一种非线性的数据结构。由n(n>=0)个节点组成.如果n=0,是一颗空数。如果n>0,树有一个特殊的节点,这个节点没有父节点,称为根节点(root)除根节点之外的其余数据元素被分为m(m>=0)个互不相交的集合T1,T2…Tm-1,其中每一个集合Ti(1<=i<=m),本身也是一棵树,被称作原数的子树。下图是一棵树树的相关概念1、节点 它包...原创 2019-03-08 13:43:25 · 399 阅读 · 0 评论 -
数据结构与算法学习三(基于JavaScript)----BitMap
BitMap是用bit位来记录数据存在与否的一种算法。在处理大数据时,可以节省大量空间,速度也很快。先来看一个例子。 已知有n个整数,这些整数的范围是[0,100],请你设计一种数据结构,使用数组存储这些数据,并提供两种方法, 分别是addMember和isExist.下面是这种数据结构的类的定义。function FindClass(){ var datas =...原创 2019-03-07 15:59:29 · 2033 阅读 · 0 评论 -
数据结构与算法学习五(基于JavaScript)----堆
数据集合有序,能够为各种操作带来便利。但有些应用并不要求所有数据都是有序的,或者在操作开始之前就变的完全有序。一些应用需要先收集一部分数据,从中选出最大或最小的关键码记录,后序收集更多的数据但始终处理数据中最小或最大关键码的记录,比如优先级队列, 优先级队列并不满足先进先出的特性,他能做到高优先级的先出队列,在优先级队列的各种实现中,堆是最高效的一种数据结构。堆是一种完全二叉树。1 概念1...原创 2019-03-09 17:39:00 · 316 阅读 · 0 评论 -
数据结构与算法学习六(基于JavaScript)---- 哈夫曼树
也称最优二叉树。是带权路径长度最小的二叉树。概念:1、路径长度路径: 从树中的一个节点到另一个节点之间的分支构成这两点之间的路径路径长度:路径上的分支条数,树的路径长度是从树的根节点到每个节点的路径长度之和。2、带权路径长度节点的带权路径长度为从该节点到根节点之间的路径长度与节点上权的乘积。树的带权路径长度为树中所有叶子节点的带权路径长度之和。记为WPL。如下图:图a WPL =...原创 2019-03-13 22:30:51 · 812 阅读 · 0 评论 -
数据结构与算法学习二(基于JavaScript)----链表
链表是物理存储单元上的非连续的、非顺序的存储结构,由一系列节点组成。(本文提到的链表,均指单链表)。关于链表的几个重要概念1、节点节点包含两部分,一部分是存储数据元素的数据域,一部分是存储指向下一个节点的指针。var Node = function(data){ this.data = data; this.next = null;}var node1 = new N...原创 2019-03-01 19:18:33 · 202 阅读 · 0 评论 -
数据结构学习二(基于JavaScript)----队列
队列是一种“先进先出”的线性表。只允许在队列头部删除元素,尾部添加元素。好像生活中排队购票一样。如下图队列的方法enqueue 队列尾部添加一个元素dequeue 队列头部删除一个元素head 返回头部元素size 返回队列大小clear 清空队列isEmpty 判断队列是否为空tail 返回队列尾节点基于数组实现一个队...原创 2019-02-23 19:02:38 · 161 阅读 · 0 评论 -
数据结构与算法学习一(基于javascript) ----栈
栈是一种“先进后出”的数据结构。好比向一个盒子中放东西,先放进去的在下面,后放进去的在上面。拿出来的时候要先把上面的拿出,才能拿下面的。(网上找的图。。。)栈的实现–基于JavaScript数组栈的操作基本的就入栈和出栈两种。下面基于JavaScript的数组来实现一个栈。function Stack(){ var items = []; // 从栈顶添加元素,---压栈...原创 2019-02-22 10:11:17 · 230 阅读 · 0 评论