自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

zjw_python的博客

人生苦短,我用Python

  • 博客(412)
  • 问答 (6)
  • 收藏
  • 关注

原创 100道最常见的校招前端面试题(更新中)

Http协议中Post和Get方法的区别?如何利用CSS实现三角形?常见的跨域技术有哪些?如何利用CSS2实现元素水平垂直居中?rem和em的区别?闭包是什么?有什么用?图像懒加载的原理是什么?git pull 和 git fetch方法的区别?Https的主要特点?position属性?...

2021-01-18 16:33:23 15227 5

原创 Linux命令学习笔记

1.基本命令日期date日历cal [month] [year]cal 2015cal 10 2015数据同步写入磁盘sync关机shutdown重启reboot 2.文件相关命令列出文件ls -al修改权限chmod [-R] 777 文件或目录chmod u=rwx,go=rx 文件或目录chmod a+w 文件或目录chmod u-x 文件或目录切换目录cd [相对或绝对路径]显示当前路径pwd创建新目录mkdir testmkd

2021-06-01 22:16:07 637 1

原创 docker学习笔记

1. Docker简介由go语言开发,基于Linux内核的cgroup、namespace等技术,对进程进行封装隔离。属于操作系统层面的虚拟化技术。传统虚拟机技术是虚拟出一套硬件后,在其上运行一个完整操作系统,在该系统上再运行所需应用进程;而容器内的应用进程直接运行于宿主的内核,容器内没有自己的内核,而且也没有进行硬件虚拟。因此容器要比传统虚拟机更为轻便。前者具有以下优点:更高效的系统资源利用率更快的启动时间通过Dockerfile快速进行镜像构建,更轻松的迁移和部署交付2. 基本

2021-01-20 17:44:53 631

原创 TypeScript 学习笔记

该篇笔记仅记录与Javascript相比新增的概念和功能1.基础类型// 布尔值let a: boolean = false;// 数字let b: number = 123; // 字符串let c: string = "zjw";// 数组let d: number[] = [1,2,3];let d: Array<number> = [1,2,3];// 元组,元组类型允许表示一个已知元素数量和类型的数组,各元素的类型不必相同let e: [string,

2020-11-16 16:11:42 1811 1

原创 322. 零钱兑换(JS实现)

1 题目给定不同面额的硬币 coins 和一个总金额 amount。编写一个函数来计算可以凑成总金额所需的最少的硬币个数。如果没有任何一种硬币组合能组成总金额,返回 -1。示例 1:输入: coins = [1, 2, 5], amount = 11输出: 3解释: 11 = 5 + 5 + 1示例 2:输入: coins = [2], amount = 3输出: -1链接:https://leetcode-cn.com/problems/coin-change2 思路这道题考察贪

2020-08-18 19:28:08 1186 1

原创 324. 摆动排序 II(JS实现)

1 题目给定一个无序的数组 nums,将它重新排列成 nums[0] < nums[1] > nums[2] < nums[3]… 的顺序。示例 1:输入: nums = [1, 5, 1, 1, 6, 4]输出: 一个可能的答案是 [1, 4, 1, 5, 1, 6]示例 2:输入: nums = [1, 3, 2, 2, 3, 1]输出: 一个可能的答案是 [2, 3, 1, 3, 1, 2]说明:你可以假设所有输入都会得到有效的结果。进阶:你能用 O(n) 时

2020-08-18 19:27:59 583

原创 328. 奇偶链表(JS实现)

1 题目给定一个单链表,把所有的奇数节点和偶数节点分别排在一起。请注意,这里的奇数节点和偶数节点指的是节点编号的奇偶性,而不是节点的值的奇偶性。请尝试使用原地算法完成。你的算法的空间复杂度应为 O(1),时间复杂度应为 O(nodes),nodes 为节点总数。示例 1:输入: 1->2->3->4->5->NULL输出: 1->3->5->2->4->NULL示例 2:输入: 2->1->3->5->6-&

2020-08-18 19:27:50 744

原创 用JS手写一个简单的Promise

参照Promise/A+规范手写了一个简化版的promiseclass MyPromise { constructor(fn) { if (typeof fn !== 'function') { throw new Error('参数必须为函数'); } this._state = 'Pending'; this._value = null; this._reason = null; this.fulfillCallbacks = [];

2020-08-18 19:26:57 1443

原创 313. 超级丑数(JS实现)

1 题目编写一段程序来查找第 n 个超级丑数。超级丑数是指其所有质因数都是长度为 k 的质数列表 primes 中的正整数。示例:输入: n = 12, primes = [2,7,13,19]输出: 32解释: 给定长度为 4 的质数列表 primes = [2,7,13,19],前 12 个超级丑数序列为:[1,2,4,7,8,13,14,16,19,26,28,32] 。说明:1 是任何给定 primes 的超级丑数。给定 primes 中的数字以升序排列。0 < k ≤

2020-08-17 10:05:03 402

原创 319. 灯泡开关(JS实现)

1 题目初始时有 n 个灯泡关闭。 第 1 轮,你打开所有的灯泡。 第 2 轮,每两个灯泡你关闭一次。 第 3 轮,每三个灯泡切换一次开关(如果关闭则开启,如果开启则关闭)。第 i 轮,每 i 个灯泡切换一次开关。 对于第 n 轮,你只切换最后一个灯泡的开关。 找出 n 轮后有多少个亮着的灯泡。示例:输入: 3输出: 1解释:初始时, 灯泡状态 [关闭, 关闭, 关闭].第一轮后, 灯泡状态 [开启, 开启, 开启].第二轮后, 灯泡状态 [开启, 关闭, 开启].第三轮后, 灯泡状态

2020-08-17 10:04:51 485

原创 318. 最大单词长度乘积(JS实现)

1 题目给定一个字符串数组 words,找到 length(word[i]) * length(word[j]) 的最大值,并且这两个单词不含有公共字母。你可以认为每个单词只包含小写字母。如果不存在这样的两个单词,返回 0。示例 1:输入: [“abcw”,“baz”,“foo”,“bar”,“xtfn”,“abcdef”]输出: 16解释: 这两个单词为 “abcw”, “xtfn”。示例 2:输入: [“a”,“ab”,“abc”,“d”,“cd”,“bcd”,“abcd”]输出: 4

2020-08-17 10:04:41 285

原创 309. 最佳买卖股票时机含冷冻期(JS实现)

1 题目给定一个整数数组,其中第 i 个元素代表了第 i 天的股票价格 。​设计一个算法计算出最大利润。在满足以下约束条件下,你可以尽可能地完成更多的交易(多次买卖一支股票):你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。卖出股票后,你无法在第二天买入股票 (即冷冻期为 1 天)。示例:输入: [1,2,3,0,2]输出: 3解释: 对应的交易状态为: [买入, 卖出, 冷冻期, 买入, 卖出]链接:https://leetcode-cn.com/problems/be

2020-08-17 10:04:33 300

原创 310. 最小高度树(JS实现)

1 题目对于一个具有树特征的无向图,我们可选择任何一个节点作为根。图因此可以成为树,在所有可能的树中,具有最小高度的树被称为最小高度树。给出这样的一个图,写出一个函数找到所有的最小高度树并返回他们的根节点。格式该图包含 n 个节点,标记为 0 到 n - 1。给定数字 n 和一个无向边 edges 列表(每一个边都是一对标签)。你可以假设没有重复的边会出现在 edges 中。由于所有的边都是无向边, [0, 1]和 [1, 0] 是相同的,因此不会同时出现在 edges 里。示例 1:输入:

2020-08-17 10:04:19 365

原创 307. 区域和检索 - 数组可修改(JS实现)

1 题目给定一个整数数组 nums,求出数组从索引 i 到 j (i ≤ j) 范围内元素的总和,包含 i, j 两点。update(i, val) 函数可以通过将下标为 i 的数值更新为 val,从而对数列进行修改。示例:Given nums = [1, 3, 5]sumRange(0, 2) -> 9update(1, 2)sumRange(0, 2) -> 8说明:数组仅可以在 update 函数下进行修改。你可以假设 update 函数与 sumRange 函

2020-08-17 10:04:10 392

原创 306. 累加数(JS实现)

1 题目累加数是一个字符串,组成它的数字可以形成累加序列。一个有效的累加序列必须至少包含 3 个数。除了最开始的两个数以外,字符串中的其他数都等于它之前两个数相加的和。给定一个只包含数字 ‘0’-‘9’ 的字符串,编写一个算法来判断给定输入是否是累加数。说明: 累加序列里的数不会以 0 开头,所以不会出现 1, 2, 03 或者 1, 02, 3 的情况。示例 1:输入: “112358”输出: true解释: 累加序列为: 1, 1, 2, 3, 5, 8 。1 + 1 = 2, 1 +

2020-08-17 10:03:59 835

原创 304. 二维区域和检索 - 矩阵不可变(JS实现)

1 题目给定一个二维矩阵,计算其子矩形范围内元素的总和,该子矩阵的左上角为 (row1, col1) ,右下角为 (row2, col2)。上图子矩阵左上角 (row1, col1) = (2, 1) ,右下角(row2, col2) = (4, 3),该子矩形内元素的总和为 8。示例:给定 matrix = [[3, 0, 1, 4, 2],[5, 6, 3, 2, 1],[1, 2, 0, 1, 5],[4, 1, 0, 1, 7],[1, 0, 3, 0, 5]]sumRegi

2020-08-17 10:03:43 297

原创 300. 最长上升子序列(JS实现)

1 题目给定一个无序的整数数组,找到其中最长上升子序列的长度。示例:输入: [10,9,2,5,3,7,101,18]输出: 4解释: 最长的上升子序列是 [2,3,7,101],它的长度是 4。说明:可能会有多种最长上升子序列的组合,你只需要输出对应的长度即可。你算法的时间复杂度应该为 O(n2) 。进阶: 你能将算法的时间复杂度降低到 O(n log n) 吗?链接:https://leetcode-cn.com/problems/longest-increasing-subse

2020-08-17 10:03:35 1691

原创 289. 生命游戏(JS实现)

1 题目根据 百度百科 ,生命游戏,简称为生命,是英国数学家约翰·何顿·康威在 1970 年发明的细胞自动机。给定一个包含 m × n 个格子的面板,每一个格子都可以看成是一个细胞。每个细胞都具有一个初始状态:1 即为活细胞(live),或 0 即为死细胞(dead)。每个细胞与其八个相邻位置(水平,垂直,对角线)的细胞都遵循以下四条生存定律:如果活细胞周围八个位置的活细胞数少于两个,则该位置活细胞死亡;如果活细胞周围八个位置有两个或三个活细胞,则该位置活细胞仍然存活;如果活细胞周围八个位置有超

2020-08-17 10:03:23 594

原创 287. 寻找重复数(JS实现)

1 题目给定一个包含 n + 1 个整数的数组 nums,其数字都在 1 到 n 之间(包括 1 和 n),可知至少存在一个重复的整数。假设只有一个重复的整数,找出这个重复的数。示例 1:输入: [1,3,4,2,2]输出: 2示例 2:输入: [3,1,3,4,2]输出: 3说明:不能更改原数组(假设数组是只读的)。只能使用额外的 O(1) 的空间。时间复杂度小于 O(n2) 。数组中只有一个重复的数字,但它可能不止重复出现一次。链接:https://leetcode-cn.

2020-08-16 11:46:15 435

原创 284. 顶端迭代器(JS实现)

1 题目给定一个迭代器类的接口,接口包含两个方法: next() 和 hasNext()。设计并实现一个支持 peek() 操作的顶端迭代器 – 其本质就是把原本应由 next() 方法返回的元素 peek() 出来。示例:假设迭代器被初始化为列表 [1,2,3]。调用 next() 返回 1,得到列表中的第一个元素。现在调用 peek() 返回 2,下一个元素。在此之后调用 next() 仍然返回 2。最后一次调用 next() 返回 3,末尾元素。在此之后调用 hasNext() 应该返回

2020-08-16 11:39:22 288

原创 283. 移动零(JS实现)

1 题目给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。示例:输入: [0,1,0,3,12]输出: [1,3,12,0,0]说明:必须在原数组上操作,不能拷贝额外的数组。尽量减少操作次数。链接:https://leetcode-cn.com/problems/move-zeroes2 思路这道题我用双指针的方法,p1指针遍历整个数组,p2指针只记录不是0的数,并将其赋值给p1指针3代码/** * @param {number[]}

2020-08-16 11:36:03 339

原创 279. 完全平方数(JS实现)

1 题目给定正整数 n,找到若干个完全平方数(比如 1, 4, 9, 16, …)使得它们的和等于 n。你需要让组成和的完全平方数的个数最少。示例 1:输入: n = 12输出: 3解释: 12 = 4 + 4 + 4.示例 2:输入: n = 13输出: 2解释: 13 = 4 + 9.链接:https://leetcode-cn.com/problems/perfect-squares2 思路我们先计算可能的平方数,然后广度优先遍历构建一颗树,当找到叶子节点时,返回当前树的深

2020-08-16 11:32:15 606

原创 274. H 指数(JS实现)

1 题目给定一位研究者论文被引用次数的数组(被引用次数是非负整数)。编写一个方法,计算出研究者的 h 指数。h 指数的定义:h 代表“高引用次数”(high citations),一名科研人员的 h 指数是指他(她)的 (N 篇论文中)总共有 h 篇论文分别被引用了至少 h 次。(其余的 N - h 篇论文每篇被引用次数 不超过 h 次。)例如:某人的 h 指数是 20,这表示他已发表的论文中,每篇被引用了至少 20 次的论文总共有 20 篇。示例:输入:citations = [3,0,6,1

2020-08-16 11:00:24 325

原创 268. 缺失数字(JS实现)

1 题目给定一个包含 0, 1, 2, …, n 中 n 个数的序列,找出 0 … n 中没有出现在序列中的那个数。示例 1:输入: [3,0,1]输出: 2示例 2:输入: [9,6,4,2,3,5,7,0,1]输出: 8说明:你的算法应具有线性时间复杂度。你能否仅使用额外常数空间来实现?链接:https://leetcode-cn.com/problems/missing-number2 思路这道题比较简单,我们可以先遍历整个原数列,得到原数列相加和,然后用等差数列的方法快速

2020-08-16 10:51:33 351

原创 263. 丑数(JS实现)

1 题目编写一个程序,找出第 n 个丑数。丑数就是质因数只包含 2, 3, 5 的正整数。示例:输入: n = 10输出: 12解释: 1, 2, 3, 4, 5, 6, 8, 9, 10, 12 是前 10 个丑数。说明:1 是丑数。n 不超过1690。链接:https://leetcode-cn.com/problems/ugly-number-ii2 思路这道题我们可以使用动态规划生成丑数,可以通过动态规划优化。让我们从数组中只包含一个丑数数字 1 开始,使用三个指针p1

2020-08-16 10:47:39 388

原创 260. 只出现一次的数字 III(JS实现)

1 题目给定一个整数数组 nums,其中恰好有两个元素只出现一次,其余所有元素均出现两次。 找出只出现一次的那两个元素。示例 :输入: [1,2,1,3,2,5]输出: [3,5]注意:结果输出的顺序并不重要,对于上面的例子, [5, 3] 也是正确答案。你的算法应该具有线性时间复杂度。你能否仅使用常数空间复杂度来实现?链接:https://leetcode-cn.com/problems/single-number-iii2 思路这道用位运算很巧妙计算 bitmask ^= x,

2020-08-16 10:39:56 302

原创 258. 各位相加(JS实现)

1 题目编给定一个非负整数 num,反复将各个位上的数字相加,直到结果为一位数。示例:输入: 38输出: 2解释: 各位相加的过程为:3 + 8 = 11, 1 + 1 = 2。 由于 2 是一位数,所以返回 2。链接:https://leetcode-cn.com/problems/add-digits2 思路这道可以直接暴力循环,而数学上可以用自然数数根的概念进行解决3代码/** * @param {number} num * @return {number} */va

2020-08-16 10:21:50 463

原创 241. 为运算表达式设计优先级(JS实现)

1 题目给定一个含有数字和运算符的字符串,为表达式添加括号,改变其运算优先级以求出不同的结果。你需要给出所有可能的组合的结果。有效的运算符号包含 +, - 以及 * 。示例 1:输入: “2-1-1”输出: [0, 2]解释:((2-1)-1) = 0(2-(1-1)) = 2示例 2:输入: “23-45”输出: [-34, -14, -10, -10, 10]解释:(2*(3-(45))) = -34((23)-(45)) = -14((2(3-4))5) = -10(2

2020-08-16 10:14:01 498 1

原创 240. 搜索二维矩阵 II(JS实现)

1 题目编写一个高效的算法来搜索 m x n 矩阵 matrix 中的一个目标值 target。该矩阵具有以下特性:每行的元素从左到右升序排列。每列的元素从上到下升序排列。示例:现有矩阵 matrix 如下:[[1, 4, 7, 11, 15],[2, 5, 8, 12, 19],[3, 6, 9, 16, 22],[10, 13, 14, 17, 24],[18, 21, 23, 26, 30]]给定 target = 5,返回 true。给定 target

2020-08-15 21:54:20 390

原创 238. 除自身以外数组的乘积(JS实现)

1 题目给你一个长度为 n 的整数数组 nums,其中 n > 1,返回输出数组 output ,其中 output[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积。示例:输入: [1,2,3,4]输出: [24,12,8,6]提示:题目数据保证数组之中任意元素的全部前缀元素和后缀(甚至是整个数组)的乘积都在 32 位整数范围内。说明: 请不要使用除法,且在 O(n) 时间复杂度内完成此题。链接:https://leetcode-cn.com/problems/pr

2020-08-15 21:48:33 492

原创 237. 删除链表中的节点(JS实现)

1 题目请编写一个函数,使其可以删除某个链表中给定的(非末尾)节点。传入函数的唯一参数为 要被删除的节点 。现有一个链表 – head = [4,5,1,9],它可以表示为:示例 1:输入:head = [4,5,1,9], node = 5输出:[4,1,9]解释:给定你链表中值为 5 的第二个节点,那么在调用了你的函数之后,该链表应变为 4 -> 1 -> 9.示例 2:输入:head = [4,5,1,9], node = 1输出:[4,5,9]解释:给定你链表中值为

2020-08-15 21:44:16 722

原创 236. 二叉树的最近公共祖先(JS实现)

1 题目给定一个二叉搜索树, 找到该树中两个指定节点的最近公共祖先。百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。”例如,给定如下二叉搜索树: root = [6,2,8,0,4,7,9,null,null,3,5]示例 1:输入: root = [6,2,8,0,4,7,9,null,null,3,5], p = 2, q = 8输出: 6解释: 节

2020-08-15 21:38:47 565

原创 234. 回文链表(JS实现)

1 题目请判断一个链表是否为回文链表。示例 1:输入: 1->2输出: false示例 2:输入: 1->2->2->1输出: true进阶:你能否用 O(n) 时间复杂度和 O(1) 空间复杂度解决此题?链接:https://leetcode-cn.com/problems/palindrome-linked-list2 思路这道题我给每个节点添加了prev指针,然后进行依次首尾对比3代码/** * Definition for singly-li

2020-08-15 21:31:21 596

原创 232. 用栈实现队列(JS实现)

1 题目使用栈实现队列的下列操作:push(x) – 将一个元素放入队列的尾部。pop() – 从队列首部移除元素。peek() – 返回队列首部的元素。empty() – 返回队列是否为空。示例:MyQueue queue = new MyQueue();queue.push(1);queue.push(2);queue.peek(); // 返回 1queue.pop(); // 返回 1queue.empty(); // 返回 false链接:https://lee

2020-08-15 21:27:30 587

原创 231. 2的幂(JS实现)

1 题目给定一个整数,编写一个函数来判断它是否是 2 的幂次方。示例 1:输入: 1输出: true解释: 20 = 1示例 2:输入: 16输出: true解释: 24 = 16示例 3:输入: 218输出: false链接:https://leetcode-cn.com/problems/power-of-two2 思路这道题用位运算最快,满足2的幂,则二进制表达只有一个1,其余全为03代码/** * @param {number} n * @return {b

2020-08-15 21:25:06 295

原创 230. 二叉搜索树中第K小的元素(JS实现)

1 题目给定一个二叉搜索树,编写一个函数 kthSmallest 来查找其中第 k 个最小的元素。说明:你可以假设 k 总是有效的,1 ≤ k ≤ 二叉搜索树元素个数。示例 1:输入: root = [3,1,4,null,2], k = 13/ 1 42输出: 1示例 2:输入: root = [5,3,6,2,4,null,null,1], k = 35/ 3 6/ 2 4/1输出: 3链接:https://leetcode-cn.com/pr

2020-08-15 21:11:38 422

原创 229. 求众数 II(JS实现)

1 题目给定一个大小为 n 的数组,找出其中所有出现超过 ⌊ n/3 ⌋ 次的元素。说明: 要求算法的时间复杂度为 O(n),空间复杂度为 O(1)。示例 1:输入: [3,2,3]输出: [3]示例 2:输入: [1,1,1,3,3,2,2,2]输出: [1,2]链接:https://leetcode-cn.com/problems/majority-element-ii2 思路这道题用摩尔投票法进行解答,根据题意我们知道超过1/3的出现次数这样的数,最多出现两个,因此设置两个变

2020-08-15 21:08:48 330

原创 227. 基本计算器 II(JS实现)

1 题目实现一个基本的计算器来计算一个简单的字符串表达式的值。字符串表达式仅包含非负整数,+, - ,,/ 四种运算符和空格 。 整数除法仅保留整数部分。示例 1:输入: "3+22"输出: 7示例 2:输入: " 3/2 "输出: 1示例 3:输入: " 3+5 / 2 "输出: 5链接:https://leetcode-cn.com/problems/basic-calculator-ii2 思路这道题考察逆波兰算法,主要的思路就是先将中缀表达式转换为后缀表单式,然后再

2020-08-15 21:02:04 818

原创 226. 翻转二叉树(JS实现)

1 题目翻转一棵二叉树。示例:输入:4/ 2 7/ \ / 1 3 6 9输出:4/ 7 2/ \ / 9 6 3 1链接:https://leetcode-cn.com/problems/invert-binary-tree2 思路这道题用递归的方法就可以做,比较简单3代码/** * Definition for a binary tree node. * function TreeNode(val) { *

2020-08-11 22:02:12 414

原创 223. 矩形面积(JS实现)

1 题目在二维平面上计算出两个由直线构成的矩形重叠后形成的总面积。每个矩形由其左下顶点和右上顶点坐标表示,如图所示。示例:输入: -3, 0, 3, 4, 0, -1, 9, 2输出: 45链接:https://leetcode-cn.com/problems/rectangle-area2 思路这道题的思路就是两个矩形的面积相加再减去重叠的部分面积就是答案,于是重点就在于如何计算重叠部分的面积,最后可以总结规律3代码/** * @param {number} A * @para

2020-08-11 21:51:29 1040

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除