- 博客(45)
- 收藏
- 关注
原创 JavaScript 每日一题---LeetCode 977. 有序数组的平方
题目描述:给你一个按 非递减顺序 排序的整数数组 nums,返回 每个数字的平方 组成的新数组,要求也按 非递减顺序 排序。解题思路:给定的数组为整数数组,也就是说会存在负数。最简单的方法就是先将每个数的平方 push 到一个新数组中,再 sort 一下。另一个思路是,既然是非递减排序,那么边界的数的平方一定大于中间的数(不一定是哪边)。所以我们可以首尾双指针遍历数组,比较哪个数的平方较大,最后将较大的数的平方 unshift 到一个新数组中即可。完整代码:/**...
2022-04-10 23:11:15
1137
原创 JavaScript 每日一题---LeetCode 2024. 考试的最大困扰度
题目描述:一位老师正在出一场由 n 道判断题构成的考试,每道题的答案为 true (用 'T' 表示)或者 false (用 'F' 表示)。老师想增加学生对自己做出答案的不确定性,方法是 最大化 有 连续相同 结果的题数。(也就是连续出现 true 或者连续出现 false)。给你一个字符串 answerKey ,其中 answerKey[i] 是第 i 个问题的正确结果。除此以外,还给你一个整数 k ,表示你能进行以下操作的最多次数:每次操作中,将问题的正确答案改为'T' 或者'F'(...
2022-03-29 13:36:56
606
原创 Vue.js---消息订阅与发布(pubsub-js库)
消息订阅与发布也是实现组件间数据传递的一种实现方式,这里主要依赖于 pubsub-js库,首先需要安装该库。npm i pubsub-js再在需要的组件上引入该库import pubsub from 'pubsub-js'接下来进行消息订阅与发布://接收数据的组件this.pubid = pubsub.subscribe('baci',(a,b)=>{ console.log('baci done',b);})//传递数据的组件sendst...
2022-03-28 15:33:02
1025
原创 JavaScript 每日一题---LeetCode 693. 交替位二进制数
题目描述:给定一个正整数,检查它的二进制表示是否总是 0、1 交替出现:换句话说,就是二进制表示中相邻两位的数字永不相同。解题思路:1.对给到的数循环取余,若当前取余结果等于上次取余的结果,则说明相邻数字相同,则返回 false。循环结束返回 true。 2.利用位运算的异或运算。完整代码:/** * @param {number} n * @return {boolean} */var hasAlternatingBits = functio...
2022-03-28 09:46:23
331
原创 JavaScript 每日一题---LeetCode 4. 寻找两个正序数组的中位数
题目描述:给定两个大小分别为 m 和 n 的正序(从小到大)数组 nums1 和 nums2。请你找出并返回这两个正序数组的 中位数 。算法的时间复杂度应该为 O(log (m+n)) 。思路简单但细节满满的一个题 主要思路是双指针,移动次数为两数组长度和的一半Math.ceil((n1 + n2) / 2)。唯一需要注意的就是边界条件,数组越界的问题。var findMedianSortedArrays = function(nums1, nums2) { l...
2022-03-27 22:13:32
951
原创 JavaScript 每日一题---LeetCode 2028. 找出缺失的观测数据
题目描述:现有一份 n + m 次投掷单个 六面 骰子的观测数据,骰子的每个面从 1 到 6 编号。观测数据中缺失了 n 份,你手上只拿到剩余 m 次投掷的数据。幸好你有之前计算过的这 n + m 次投掷数据的 平均值 。给你一个长度为 m 的整数数组 rolls ,其中 rolls[i] 是第 i 次观测的值。同时给你两个整数 mean 和 n 。返回一个长度为 n 的数组,包含所有缺失的观测数据,且满足这 n + m 次投掷的 平均值 是 mean 。如果存在多组符合要求的答案,只需要返回其
2022-03-27 12:13:44
264
原创 JavaScript 每日一题---LeetCode 141. 环形链表
给你一个链表的头节点 head ,判断链表中是否有环。如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。 为了表示给定链表中的环,评测系统内部使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。注意:pos 不作为参数进行传递 。仅仅是为了标识链表的实际情况。如果链表中存在环 ,则返回 true 。 否则,返回 false 。神奇解法:JSON.stringify() 函数可以自动判断参数是否成环,若成环则报错,所以可以利用 t...
2022-03-27 11:38:43
895
原创 JavaScript 每日一题---LeetCode 19. 删除链表的倒数第 N 个结点
题目描述:给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点。解题思路:主要利用双指针,让右指针先走 n 步,再让两指针一起走直到右指针走到链表尽头为止。此时让左指针删除一个节点即可。注意需要判断一开始右指针就走到链表尽头的情况,如 [1],1,右指针一开始就会到链表尽头的下一个结点(null),此时返回的是头结点的 next 结点(因为头节点便是要删除的结点)。完整代码:/** * Definition for singly-linked list....
2022-03-26 13:38:00
753
原创 Vue.js---关闭语法检查
Vue.js初配置时可能会出现神奇报错,这时只需要关闭语法检查即可。在 vue.config.js 文件中配置如下代码:module.exports = { lintOnSave: false //关闭语法检查}注意需要 VSCode 中的 ESlink、jshint 等语法检查插件,否则仍然会报错。不要问我是怎么知道的。...
2022-03-25 21:30:58
2352
原创 JavaScript 每日一题---LeetCode 11. 盛最多水的容器
题目描述:给定一个长度为 n 的整数数组 height 。有 n 条垂线,第 i 条线的两个端点是 (i, 0) 和 (i, height[i]) 。找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。返回容器可以储存的最大水量。说明:你不能倾斜容器。解题思路:本质上就是一个算面积的问题,取两条线中较短的一条与两条线的间隔相乘即为当前围成的面积。所以很容易就想到双指针的做法,即左指针最开始在最左端,右指针最开始在最右端,逐步向中间逼近。每次移动的是指向...
2022-03-25 11:11:02
363
原创 JavaScript 每日一题---LeetCode 3. 无重复字符的最长子串
题目描述:给定一个字符串 s ,请你找出其中不含有重复字符的 最长子串 的长度。解题思路:利用双指针划分一个区间为当前最长字串,右指针不断向右移动,每遇到一个字符就通过 Map 记录该字符及其最后一次出现的索引值。若判断 右指针遇到了出现过的字符 且 该字符上一次出现的位置大于等于左指针 ,则左指针移到该字符上一次出现的位置的下一个位置。判断的依据:通俗说法就是左右指针这个区间就是当前(遍历字符串时)时刻的字串,即右指针固定某个地方时的最...
2022-03-24 14:55:09
1250
原创 JavaScript 每日一题---LeetCode 2.两数相加
给你两个 非空 的链表,表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位 数字。请你将两个数相加,并以相同形式返回一个表示和的链表。你可以假设除了数字 0 之外,这两个数都不会以 0 开头。解题思路: * function ListNode(val, next) { * this.val = (val===undefined ? 0 : val) * this.next = (next===undefined ? null : n
2022-03-23 11:51:19
806
原创 JavaScript进阶--ES6新特性
目录let声明变量:const声明变量:解构赋值:模板字符串:对象简化写法:箭头函数:参数默认值:rest参数:扩展运算符:Symbol数据类型:迭代器(iterator):生成器:Promise:Set:Map:第一次写那么多,脑壳疼let声明变量:变量不能重复声明,有效防止变量污染 作用域为块级作用域,只在代码块中有效,如 if (true) { var a = 10; let b = 20;}c.
2022-03-18 21:58:41
1501
原创 JavaScript--DOM事件流
DOM事件流的概念当某个事件发生时,事件会在元素节点之间按照特定的顺序传播,这个传播过程称为DOM事件流。DOM事件流分为两个阶段--捕获阶段、冒泡阶段。捕获阶段简单来说就是从整个页面(即document)开始到html--body--div--ul--li...。即根据元素的嵌套顺序依次传递事件,直到找到触发该事件的元素为止。而冒泡阶段则为捕获阶段的逆过程,即从触发事件的元素开始根据元素的嵌套顺序找到document为止。即除触发事件的元素外,其余每个节点都被访问两次,从而会出现事...
2022-02-04 22:22:31
802
1
原创 JavaScriptDOM基本操作--留言板页面
目标:实现基本留言板功能,有提交留言、删除留言的交互功能。页面布局:一个输入文本框textarea、一个提交按钮、一个无序列表用于存储留言信息。 <textarea name="" id="" cols="30" rows="10"></textarea><br> <button>submit</button> <ul></ul>实现逻辑:1.提交留言:每当按下...
2022-01-27 21:44:30
1292
原创 JavaScript基本DOM操作--密码输入框切换是否可见
实现原理:通过js的DOM操作更改表单元素的type属性(text/password)来控制表单输入框的文本是否可见。//css部分 #d { position: relative; width: 200px; height: 30px; margin: 100px auto; border-bottom: 1px solid #ccc; ...
2022-01-26 23:57:38
852
原创 JavaScript构造函数继承
首先介绍对象的call()函数和apply()函数,这两个函数的作用相同、用法不同。它们的作用均是指定当前调用函数的this对象是谁。call()函数:在第一个传递的参数为一个对象,该对象为该函数的this对象,后面依次传递函数的实参。apply()函数:与call函数大致相同,不同的是实参是以数组的形式传递,用一个数字存储所有实参并作为第二个参数传入apply()函数中。 而构造函数的原理就是利用call函数,在子类的构造函数中用c...
2022-01-26 01:34:45
1946
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人