02 2023 档案

摘要:给定一个大小为 n 的整数数组,找出其中所有出现超过 ⌊ n/3 ⌋ 次的元素。 /** * @param {number[]} nums * @return {number[]} */ const majorityElement = (nums) => { const map = new Map( 阅读全文
posted @ 2023-02-21 01:26 671_MrSix 阅读(13) 评论(0) 推荐(0) 编辑
摘要:给你一个整数数组 nums 和一个整数 k ,请你返回其中出现频率前 k 高的元素。你可以按 任意顺序 返回答案。 /** * @param {number[]} nums * @param {number} k * @return {number[]} */ const topKFrequent 阅读全文
posted @ 2023-02-20 19:37 671_MrSix 阅读(10) 评论(0) 推荐(0) 编辑
摘要:以数组 intervals 表示若干个区间的集合,其中单个区间为 intervals[i] = [starti, endi] 。请你合并所有重叠的区间,并返回 一个不重叠的区间数组,该数组需恰好覆盖输入中的所有区间 。 /** * @param {number[][]} intervals * @r 阅读全文
posted @ 2023-02-19 18:35 671_MrSix 阅读(11) 评论(0) 推荐(0) 编辑
摘要:给定一个链表的头节点 head ,返回链表开始入环的第一个节点。 如果链表无环,则返回 null。 如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。 为了表示给定链表中的环,评测系统内部使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。如果 pos 阅读全文
posted @ 2023-02-19 17:58 671_MrSix 阅读(10) 评论(0) 推荐(0) 编辑
摘要:给你一个整数数组 nums 。如果任一值在数组中出现 至少两次 ,返回 true ;如果数组中每个元素互不相同,返回 false 。 /** * @param {number[]} nums * @return {boolean} */ const containsDuplicate = (nums 阅读全文
posted @ 2023-02-19 17:32 671_MrSix 阅读(12) 评论(0) 推荐(0) 编辑
摘要:设计一个支持 push ,pop ,top 操作,并能在常数时间内检索到最小元素的栈。 实现 MinStack 类: MinStack() 初始化堆栈对象。 void push(int val) 将元素val推入堆栈。 void pop() 删除堆栈顶部的元素。 int top() 获取堆栈顶部的元 阅读全文
posted @ 2023-02-18 19:11 671_MrSix 阅读(16) 评论(0) 推荐(0) 编辑
摘要:给定一个包含红色、白色和蓝色、共 n 个元素的数组 nums ,原地对它们进行排序,使得相同颜色的元素相邻,并按照红色、白色、蓝色顺序排列。 我们使用整数 0、 1 和 2 分别表示红色、白色和蓝色。 必须在不使用库内置的 sort 函数的情况下解决这个问题。 const sortColors = 阅读全文
posted @ 2023-02-18 01:47 671_MrSix 阅读(109) 评论(0) 推荐(0) 编辑
摘要:Array.prototype.myForEach = function (callback, thisArg = undefined) { if (typeof callback !== 'function') { throw new TypeError(`${callback} is not a 阅读全文
posted @ 2023-02-17 00:58 671_MrSix 阅读(9) 评论(0) 推荐(0) 编辑
摘要:给你一个整数数组 nums ,找到其中最长严格递增子序列的长度。 子序列 是由数组派生而来的序列,删除(或不删除)数组中的元素而不改变其余元素的顺序。例如,[3,6,2,7] 是数组 [0,3,1,6,2,2,7] 的子序列。 /** * 最长递增子序 * 很具小巧思。新建数组 cell,用于保存最 阅读全文
posted @ 2023-02-17 00:29 671_MrSix 阅读(18) 评论(0) 推荐(0) 编辑
摘要:给你一个只包含 '(' 和 ')' 的字符串,找出最长有效(格式正确且连续)括号子串的长度。 /** * @param {string} s * @return {number} */ const longestValidParentheses = (s) => { const len = s.le 阅读全文
posted @ 2023-02-16 21:46 671_MrSix 阅读(8) 评论(0) 推荐(0) 编辑
摘要:按要求实现curry函数 const addFn = (...args) => args.reduce((total, cur) => total + cur, 0) const curry = (fn) => { let params = [] return function f(...rest) 阅读全文
posted @ 2023-02-14 13:25 671_MrSix 阅读(13) 评论(0) 推荐(0) 编辑
摘要:const obj1 = { x: 1, y: '2', z: false, m: [1, 2, 3], n: { x: 1, y: '2', z: false, }, o: [{ x: 1, y: '', z: true }] } const obj2 = { x: 1, y: '2', z: f 阅读全文
posted @ 2023-02-13 22:15 671_MrSix 阅读(29) 评论(0) 推荐(0) 编辑
摘要:给你一个二叉树的根节点 root ,判断其是否是一个有效的二叉搜索树。 有效 二叉搜索树定义如下: 节点的左子树只包含 小于 当前节点的数。 节点的右子树只包含 大于 当前节点的数。 所有左子树和右子树自身必须也是二叉搜索树。 /** * Definition for a binary tree n 阅读全文
posted @ 2023-02-10 20:39 671_MrSix 阅读(11) 评论(0) 推荐(0) 编辑
摘要:给你二叉树的根节点 root ,返回其节点值的 层序遍历 。 (即逐层地,从左到右访问所有节点)。 /** * Definition for a binary tree node. * function TreeNode(val, left, right) { * this.val = (val u 阅读全文
posted @ 2023-02-10 20:10 671_MrSix 阅读(10) 评论(0) 推荐(0) 编辑
摘要:给你一个链表的头节点 head ,判断链表中是否有环。 如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。 为了表示给定链表中的环,评测系统内部使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。注意:pos 不作为参数进行传递 。仅仅是为了标识链表的 阅读全文
posted @ 2023-02-10 19:37 671_MrSix 阅读(12) 评论(0) 推荐(0) 编辑
摘要:整数数组 nums 按升序排列,数组中的值 互不相同 。 在传递给函数之前,nums 在预先未知的某个下标 k(0 <= k < nums.length)上进行了 旋转,使数组变为 [nums[k], nums[k+1], ..., nums[n-1], nums[0], nums[1], ..., 阅读全文
posted @ 2023-02-10 19:12 671_MrSix 阅读(13) 评论(0) 推荐(0) 编辑
摘要:给定一个数组 prices ,它的第 i 个元素 prices[i] 表示一支给定股票第 i 天的价格。 你只能选择 某一天 买入这只股票,并选择在 未来的某一个不同的日子 卖出该股票。设计一个算法来计算你所能获取的最大利润。 返回你可以从这笔交易中获取的最大利润。如果你不能获取任何利润,返回 0 阅读全文
posted @ 2023-02-10 13:42 671_MrSix 阅读(10) 评论(0) 推荐(0) 编辑
摘要:1、取消 XMLHttpRequest 请求 const xhr = new XMLHttpRequest() xhr.open('get', '/sth', true) xhr.send() setTimeout(() => { xhr.abort() }, 3000) 2、取消 Fetch 请求 阅读全文
posted @ 2023-02-09 23:22 671_MrSix 阅读(689) 评论(0) 推荐(0) 编辑
摘要:给定一个二进制数组 nums , 找到含有相同数量的 0 和 1 的最长连续子数组,并返回该子数组的长度。 /** * @param {number[]} nums * @return {number} */ const findMaxLength = (nums) => { let maxLeng 阅读全文
posted @ 2023-02-09 17:27 671_MrSix 阅读(12) 评论(0) 推荐(0) 编辑
摘要:给定链表的头结点 head ,请将其按 升序 排列并返回 排序后的链表 。 /** * Definition for singly-linked list. * function ListNode(val, next) { * this.val = (val undefined ? 0 : val) 阅读全文
posted @ 2023-02-08 17:40 671_MrSix 阅读(11) 评论(0) 推荐(0) 编辑
摘要:给你一个整数 num 。重排 num 中的各位数字,使其值 最小化 且不含 任何 前导零。 返回不含前导零且值最小的重排数字。 注意,重排各位数字后,num 的符号不会改变。 /** * @param {number} num * @return {number} */ const smallest 阅读全文
posted @ 2023-02-08 16:00 671_MrSix 阅读(70) 评论(0) 推荐(0) 编辑
摘要:给你一个整数数组 nums ,判断是否存在三元组 [nums[i], nums[j], nums[k]] 满足 i != j、i != k 且 j != k ,同时还满足 nums[i] + nums[j] + nums[k] == 0 。请 你返回所有和为 0 且不重复的三元组。 注意:答案中不可 阅读全文
posted @ 2023-02-06 12:20 671_MrSix 阅读(14) 评论(0) 推荐(0) 编辑
摘要:给定一个整数数组,编写一个函数,找出索引m和n,只要将索引区间[m,n]的元素排好序,整个数组就是有序的。注意:n-m尽量最小,也就是说,找出符合条件的最短序列。函数返回值为[m,n],若不存在这样的m和n(例如整个数组是有序的),请返回[-1,-1]。 先排序 再与原数组前后依次对比 const 阅读全文
posted @ 2023-02-06 00:19 671_MrSix 阅读(18) 评论(0) 推荐(0) 编辑
摘要:有些数的素因子只有 3,5,7,请设计一个算法找出第 k 个数。注意,不是必须有这些素因子,而是必须不包含其他的素因子。例如,前几个数按顺序应该是 1,3,5,7,9,15,21。 /** * 三指针方式 */ const getKthMagicNumber = (k = 5) => { const 阅读全文
posted @ 2023-02-05 23:24 671_MrSix 阅读(19) 评论(0) 推荐(0) 编辑
摘要:给你一个下标从 0 开始、由 n 个整数组成的数组 arr 。 arr 中两个元素的 间隔 定义为它们下标之间的 绝对差 。更正式地,arr[i] 和 arr[j] 之间的间隔是 |i - j| 。 返回一个长度为 n 的数组 intervals ,其中 intervals[i] 是 arr[i] 阅读全文
posted @ 2023-02-05 23:23 671_MrSix 阅读(19) 评论(0) 推荐(0) 编辑
摘要:给你一个数组 nums,对于其中每个元素 nums[i],请你统计数组中比它小的所有数字的数目。 换而言之,对于每个 nums[i] 你必须计算出有效的 j 的数量,其中 j 满足 j != i 且 nums[j] < nums[i] 。 以数组形式返回答案。 const smallerNumber 阅读全文
posted @ 2023-02-05 19:56 671_MrSix 阅读(11) 评论(0) 推荐(0) 编辑
摘要:给定一个大小为 n 的数组 nums ,返回其中的多数元素。多数元素是指在数组中出现次数 大于 ⌊ n/2 ⌋ 的元素。 你可以假设数组是非空的,并且给定的数组总是存在多数元素。 /** * 字典方式 */ const majorityElement = (nums) => { let dic = 阅读全文
posted @ 2023-02-05 19:44 671_MrSix 阅读(9) 评论(0) 推荐(0) 编辑
摘要:给你一个整数数组 nums 和一个整数 k ,判断数组中是否存在两个 不同的索引 i 和 j ,满足 nums[i] == nums[j] 且 abs(i - j) <= k 。如果存在,返回 true ;否则,返回 false 。 /** * 时间复杂度O(n^2) */ const contai 阅读全文
posted @ 2023-02-05 02:05 671_MrSix 阅读(16) 评论(0) 推荐(0) 编辑
摘要:给定两个数组 nums1 和 nums2 ,返回 它们的交集 。输出结果中的每个元素一定是 唯一 的。我们可以 不考虑输出结果的顺序 。 const intersection = (nums1, nums2) => { return [...new Set(nums1.filter(i => num 阅读全文
posted @ 2023-02-05 01:44 671_MrSix 阅读(15) 评论(0) 推荐(0) 编辑
摘要:// 二分法 O(logn) const findNearestTarget = (nums = [1, 2, 6, 9, 10], target = 3) => { let startIdx = 0, endIdx = nums.length - 1; while (startIdx <= end 阅读全文
posted @ 2023-02-05 00:58 671_MrSix 阅读(173) 评论(0) 推荐(0) 编辑
摘要:在 MATLAB 中,有一个非常有用的函数 reshape ,它可以将一个 m x n 矩阵重塑为另一个大小不同(r x c)的新矩阵,但保留其原始数据。 给你一个由二维数组 mat 表示的 m x n 矩阵,以及两个正整数 r 和 c ,分别表示想要的重构的矩阵的行数和列数。 重构后的矩阵需要将原 阅读全文
posted @ 2023-02-05 00:17 671_MrSix 阅读(11) 评论(0) 推荐(0) 编辑
摘要:给定一个循环数组 nums ( nums[nums.length - 1] 的下一个元素是 nums[0] ),返回 nums 中每个元素的 下一个更大元素 。 数字 x 的 下一个更大的元素 是按数组遍历顺序,这个数字之后的第一个比它更大的数,这意味着你应该循环地搜索它的下一个更大的数。如果不存在 阅读全文
posted @ 2023-02-04 23:53 671_MrSix 阅读(13) 评论(0) 推荐(0) 编辑
摘要:nums1 中数字 x 的 下一个更大元素 是指 x 在 nums2 中对应位置 右侧 的 第一个 比 x 大的元素。 给你两个 没有重复元素 的数组 nums1 和 nums2 ,下标从 0 开始计数,其中nums1 是 nums2 的子集。 对于每个 0 <= i < nums1.length 阅读全文
posted @ 2023-02-04 23:30 671_MrSix 阅读(16) 评论(0) 推荐(0) 编辑
摘要:给定一组非负整数 nums,重新排列每个数的顺序(每个数不可拆分)使之组成一个最大的整数。 注意:输出结果可能非常大,所以你需要返回一个字符串而不是整数。 /** * @param {number[]} nums * @return {string} */ const largestNumber = 阅读全文
posted @ 2023-02-04 22:24 671_MrSix 阅读(24) 评论(0) 推荐(0) 编辑
摘要:给你一个 升序排列 的数组 nums ,请你 原地 删除重复出现的元素,使每个元素 只出现一次 ,返回删除后数组的新长度。元素的 相对顺序 应该保持 一致 。 由于在某些语言中不能改变数组的长度,所以必须将结果放在数组nums的第一部分。更规范地说,如果在删除重复项之后有 k 个元素,那么 nums 阅读全文
posted @ 2023-02-04 21:40 671_MrSix 阅读(14) 评论(0) 推荐(0) 编辑
摘要:给定一个保存员工信息的数据结构,它包含了员工 唯一的 id ,重要度 和 直系下属的 id 。 比如,员工 1 是员工 2 的领导,员工 2 是员工 3 的领导。他们相应的重要度为 15 , 10 , 5 。那么员工 1 的数据结构是 [1, 15, [2]] ,员工 2的 数据结构是 [2, 10 阅读全文
posted @ 2023-02-04 21:14 671_MrSix 阅读(37) 评论(0) 推荐(0) 编辑
摘要:给你一个字符串 s ,请你根据下面的算法重新构造字符串: 从 s 中选出 最小 的字符,将它 接在 结果字符串的后面。从 s 剩余字符中选出 最小 的字符,且该字符比上一个添加的字符大,将它 接在 结果字符串后面。重复步骤 2 ,直到你没法从 s 中选择字符。从 s 中选出 最大 的字符,将它 接在 阅读全文
posted @ 2023-02-04 17:06 671_MrSix 阅读(10) 评论(0) 推荐(0) 编辑
摘要:丑数 就是只包含质因数 2、3 和 5 的正整数。 给你一个整数 n ,请你判断 n 是否为 丑数 。如果是,返回 true ;否则,返回 false 。 /** * @param {number} n * @return {boolean} */ const isUgly = (n) => { i 阅读全文
posted @ 2023-02-04 15:15 671_MrSix 阅读(23) 评论(0) 推荐(0) 编辑
摘要:编写一个高效的算法来判断 m x n 矩阵中,是否存在一个目标值。该矩阵具有如下特性: 每行中的整数从左到右按升序排列。每行的第一个整数大于前一行的最后一个整数。 /** * @param {number[][]} matrix * @param {number} target * @return 阅读全文
posted @ 2023-02-04 15:13 671_MrSix 阅读(13) 评论(0) 推荐(0) 编辑
摘要:给你一个含 n 个整数的数组 nums ,其中 nums[i] 在区间 [1, n] 内。请你找出所有在 [1, n] 范围内但没有出现在 nums 中的数字,并以数组的形式返回结果。 const findDisappearedNumbers = (nums = [1,1]) => { let le 阅读全文
posted @ 2023-02-03 16:24 671_MrSix 阅读(14) 评论(0) 推荐(0) 编辑
摘要:const thousandth = (num = 123456789, fixed = 0) => { const strNum = num.toFixed(fixed) const [startStr, endStr] = strNum.split('.') let endIdx = start 阅读全文
posted @ 2023-02-03 14:45 671_MrSix 阅读(178) 评论(0) 推荐(0) 编辑
摘要:const arrayReverseChangeMetaArray = (arr = [1,2,3]) => { const res = [] while(arr.length){ res.push(arr.pop()) } return res } const arrayReverse = (ar 阅读全文
posted @ 2023-02-03 14:21 671_MrSix 阅读(5) 评论(0) 推荐(0) 编辑
摘要:String.prototype.myTrim = function (){ return this.replace(/^\s+ | \s+$/g, '') } 阅读全文
posted @ 2023-02-03 14:15 671_MrSix 阅读(20) 评论(0) 推荐(0) 编辑
摘要:如果使用函数怎么实现??? class ReduceNumber{ constructor(init = 0){ this.init = init } add(m){ this.init += m return this } minus(n){ this.init -= n return this 阅读全文
posted @ 2023-02-03 13:12 671_MrSix 阅读(17) 评论(0) 推荐(0) 编辑
摘要:/** * 给定一个无序数组,如[3,1,2,4,-7,4,5,-10,2],数组位置不能动,找出其中的两个数min和max,要求其差值是相对最大的。 * 要求:min所在的位置,必须在max所在的位置之前 * 举例:如果没有要求的话,min应该-10,max是5,但是由于-10所在的位置在5之后, 阅读全文
posted @ 2023-02-03 01:30 671_MrSix 阅读(37) 评论(0) 推荐(0) 编辑
摘要:class LazyMan { tasks = [] constructor(name){ this.name = name console.log(`I am ${name}`) setTimeout(() => { this.next() }) } next(){ const task = th 阅读全文
posted @ 2023-02-02 17:37 671_MrSix 阅读(8) 评论(0) 推荐(0) 编辑
摘要:const getValueType = (value) => { const originType = Object.prototype.toString.call(value) const spaceIndex = originType.indexOf(' ') return originTyp 阅读全文
posted @ 2023-02-02 13:10 671_MrSix 阅读(10) 评论(0) 推荐(0) 编辑
摘要:type和interface的相同点: 都是用来定义对象或函数的形状;它俩都支持继承,并且可以相互继承。具体形式稍有差别。interface是通过extends实现的,type是通过&实现的。 type和interface的不同点: typeof type可以定义基本类型的别名;type TMySt 阅读全文
posted @ 2023-02-02 11:59 671_MrSix 阅读(240) 评论(0) 推荐(0) 编辑
摘要:/** * 最深层级数组 */ const maxDeepArray = (arr = [1,[2,4],[4], [43,2,[444,1,[54]]], [22,3,[4]], 32]) => { const length = arr.length const fillArray = new A 阅读全文
posted @ 2023-02-02 11:32 671_MrSix 阅读(11) 评论(0) 推荐(0) 编辑
摘要:给你一个整数数组 nums ,请你找出一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。 子数组 是数组中的一个连续部分。 const maxSubArray = (nums = [-2,1,-3,4,-1,2,1,-5,4]) => { const length = nums.l 阅读全文
posted @ 2023-02-01 22:49 671_MrSix 阅读(12) 评论(0) 推荐(0) 编辑
摘要:/** * Definition for singly-linked list. * function ListNode(val, next) { * this.val = (val undefined ? 0 : val) * this.next = (next undefined ? null 阅读全文
posted @ 2023-02-01 17:38 671_MrSix 阅读(13) 评论(0) 推荐(0) 编辑
摘要:给你一个整数数组 nums ,你需要找出一个 连续子数组 ,如果对这个子数组进行升序排序,那么整个数组都会变为升序排序。 请你找出符合题意的 最短 子数组,并输出它的长度。 const findUnsortedSubarray = (nums) => { const length = nums.le 阅读全文
posted @ 2023-02-01 14:43 671_MrSix 阅读(14) 评论(0) 推荐(0) 编辑
摘要:const countSubstrings = (s) => { let len = s.length if([0,1].includes(len)) return len let res = 0 const getStr = (s, l, r) => { while(l >= 0 && r <= 阅读全文
posted @ 2023-02-01 14:06 671_MrSix 阅读(10) 评论(0) 推荐(0) 编辑
摘要:给定一个未排序的整数数组 nums ,找出数字连续的最长序列(不要求序列元素在原数组中连续)的长度。 请你设计并实现时间复杂度为 O(n) 的算法解决此问题。 /** * @param {number[]} nums * @return {number} */ const longestConsec 阅读全文
posted @ 2023-02-01 13:19 671_MrSix 阅读(10) 评论(0) 推荐(0) 编辑
摘要:/** * Definition for singly-linked list. * function ListNode(val, next) { * this.val = (val undefined ? 0 : val) * this.next = (next undefined ? null 阅读全文
posted @ 2023-02-01 00:30 671_MrSix 阅读(10) 评论(0) 推荐(0) 编辑