
数据结构与算法
Always--Learning
选择远远大于努力
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
LeetCode——比较版本号(分割-去零-填零-比较)
题目描述 解题思路 首先使用split将元素根据标点符号点,进行分割。 对数组中的每一个元素进行去零操作,并不是所有的元素都要进行去零操作,只有该元素包含了两个字符或者以上内容的时候,并且该元素的第一个字母是0才需要进行去零操作,其余则不需要去零操作。 填0操作:首先比较两个数组的长度,长度较短的数组通过填0操作,补充到相同的长度,这样可以方便后续的比较。 比较:定义两个指针,分别指向这两个数组,同时往后遍历,只要比较到大小关系则进行返回对应的值。 AC代码 var compareVersion =原创 2021-11-16 08:11:15 · 610 阅读 · 0 评论 -
阿里前端面试题之获取嵌套数组的深度
题目描述 获取嵌套数组的深度,给定一个带嵌套的数组,实现一个方法可获取嵌套数组的最大深度,数组无嵌套子数组则返回0,有一层嵌套子数组则返回1,以此类推。 示例: getArrayDeep([1,2,[3,[1,[0]]]]); 返回3 getArrayDeep([]); 返回0 getArrayDeep([[[[]]]]) 返回3 getArrayDeep([0,[2],[2,[3]]]); 返回2 解题思路 使用递归的思想进行遍历,同时使用flag标识符来标记目标元素是否是数组,如果是数原创 2021-11-02 09:35:50 · 820 阅读 · 0 评论 -
LRU缓存机制(链表实现)
题目描述 解题思路 构造一个链表节点类和一个LRU缓存类。 一个链表的节点应该具有key,value,和next指针和prev指针。 一个LRU的实例应该具有容量capacity,hash对象,表示这个LRU中节点的数量值的count,两个辅助链表节点,分别指向最近使用的元素,和最久未使用的元素。 get方法:无论是get方法还是put方法,都要首先取出key对应的节点,判断这个节点是否是undefined,如果不存在,直接返回-1,如果存在,将其从链表中删除,然后添加到辅助链表Head的指向位置,然后原创 2021-10-31 10:42:11 · 431 阅读 · 0 评论 -
查找字符串中最长的单词
原创 2021-04-02 10:13:35 · 771 阅读 · 0 评论 -
数据结构基础——链表(JS实现)
链表的基本形式 遍历链表 遍历链表前先让一个指针指向头结点 链表中插入元素 删除元素原创 2021-04-01 11:37:21 · 220 阅读 · 0 评论 -
数据结构基础——队列
队列的特点 先进先出 在JavaScript中使用数组来模拟队列 使用队列的场景 JS异步中的任务队列 计算最近请求次数原创 2021-03-30 14:51:26 · 162 阅读 · 0 评论 -
数据结构基础——栈
栈的特点 先进后出 JS中使用数组模拟栈 // 栈——数据结构 // 在JS中使用数组来模拟栈 const stack = []; // 入栈使用push stack.push(1); // 1比2先入栈 stack.push(2); // 出栈使用pop() const item1 = stack.pop(); const item2 = stack.pop(); ...原创 2021-03-27 14:33:35 · 202 阅读 · 0 评论 -
JavaScript中链表的基础结构与增加节点的方法
基础结构 向链表中添加节点的方法 // 链表的添加方法 LinkedList.prototype.append = function (data) { // 1. 创建新的节点 let node = new ListNode(data); // 2. 判断添加的是否是第一个节点,如果是则让头指针指向该节点 if (this.length === 0) { this.head = node; } else { // 获取当前头指针指向的原创 2021-03-12 10:23:05 · 556 阅读 · 0 评论 -
LeetCode 733——图像渲染(使用JavaScript语言)
题目描述 有一幅以二维整数数组表示的图画,每一个整数表示该图画的像素值大小,数值在 0 到 65535 之间。 给你一个坐标 (sr, sc) 表示图像渲染开始的像素值(行 ,列)和一个新的颜色值 newColor,让你重新上色这幅图像。 为了完成上色工作,从初始坐标开始,记录初始坐标的上下左右四个方向上像素值与初始坐标相同的相连像素点,接着再记录这四个方向上符合条件的像素点与他们对应四个方向上像素值与初始坐标相同的相连像素点,……,重复该过程。将所有有记录的像素点的颜色值改为新的颜色值。 最后返回经过上色原创 2021-01-07 17:35:28 · 330 阅读 · 0 评论 -
LeetCode 01——两数之和(使用JavaScript语言)
题目描述 给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 的那 两个 整数,并返回它们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍。你可以按任意顺序返回答案。 方法1:(暴力法) 思路:两重循环,第一重指向第i个的时候,第二重依次遍历i后边的所有,相加一起看是否等于target,若等于则返回。 执行结果 ...原创 2021-01-06 16:19:21 · 297 阅读 · 0 评论 -
LeetCode 136. 只出现一次的数字-使用JavaScript语言
题目描述 给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次,找出那个只出现一次的元素。 方法1:(暴力法) 若元素最后一次出现时的下标和第一次出现时的下标相同,说明该元素只出现一次。 执行结果 方法2:(使用异或运算) 执行结果 ...原创 2020-12-30 18:22:09 · 252 阅读 · 0 评论 -
这是我见过讲的最清晰的迪杰斯特拉算法
算法转载自freecodecamp平台转载 2020-12-19 17:15:03 · 301 阅读 · 2 评论 -
通过函数判断一个自然数是否为素数
题目要求 代码 # 判断是否为素数 def is_prime(data): flag = True int_list = [] if data > 1: for i in range(2,data): # 查找除了1和其本身外,其他因子 if data % i == 0: # print(data,'不是素数') flag = False原创 2020-10-21 12:54:32 · 913 阅读 · 0 评论 -
算法基础01——渐近符号
1:渐进紧确界 Big Theta (Θ) 这里的Θ指的是算法实际执行时间的平均值。 2:渐进上限 Big Oh(O) 这里的O 指的是算法的最坏情况。比如遍历算法,有n个元素,当需要全部遍历,也就是说遍历到最后一个的时候,才能达到要求,此时就是最坏情况。 3:渐进下限 Big Omega (Ω) 这里的Ω指的是算法的最优情况。比如遍历算法,当遍历第一个元素的时候就达到了要求,此时的时间复杂度为1,也就是所说的最优情况。 ...原创 2020-10-10 16:40:15 · 590 阅读 · 0 评论