
数组
Jeniclala
这个作者很懒,什么都没留下…
展开
-
JS中从数组中的对象取出特定字段并生成新的数组
var arr = [ { 'id': '1', 'name': 'lala' }, { 'id': '2', 'name': 'lili' }, { 'id': '3', 'name': 'lulu' }];arr.map(x => {return x.name}) // 生成数组原创 2021-11-22 14:31:13 · 4797 阅读 · 0 评论 -
JavaScript 数组&字符串:交换数组中两数或者两字符串
交换数组中两数或者两字符串不允许定义新变量不允许使用ES6语法字符串做法:function swap(arr){ arr[0]=arr[0]+arr[1]; arr[1]=arr[0].slice(0,arr[0].length-arr[1].length); arr[0]=arr[0].slice(arr[1].length); return arr;}console.log(swap(['x','y']));数字做法:function swap(arr)原创 2021-08-26 10:30:02 · 461 阅读 · 0 评论 -
JavaScript 数组:数组乱序-洗牌算法【思路与知识点总结】
将数组乱序思路:从最后一个元素开始,从数组中随机选出一个位置,交换,直到第一个元素。function disorder(array) { const length = array.length; let current = length - 1; let random; while (current >-1) { random = Math.floor(length * Math.random());//随机下标 [a原创 2021-08-20 10:11:58 · 434 阅读 · 0 评论 -
JavaScript 树&数组:树转数组 以及 数组转成树
//数组var array = [ { pid: null, id: 1 }, { pid: 1, id: 2 }, { pid: 1, id: 5 }, { pid: 2, id: 3 }, { pid: 2, id: 4 }]//树var tree = [{ pid: null, id: 1, children: [{ pid: 1, id: 2, children: [{原创 2021-08-18 23:12:31 · 558 阅读 · 0 评论 -
JavaScript 数组:三数之和——找出所有和为 0 且不重复的三元组【思路与代码】
思路一:暴力法,但是超时不AC思路:三层循环,找到所有和为0的三元组,然后再进行二维数组的去重。知识点:一维数组肯定用ES6语法 Set来进行去重,但是不可以用到二维数组上。//二维数组的去重:哈希的方法function Deduplicate() { let tmp = [ [1, 1, 2], [1, 1, 2], [3, 4, 5] ]; let hash = {};..原创 2021-08-08 19:57:33 · 1781 阅读 · 0 评论 -
JavaScript 数组:二维数组去重
哈希法:https://blog.youkuaiyun.com/weixin_34395205/article/details/89133619function Deduplicate() { let tmp = [ [1, 1, 2], [1, 1, 2], [3, 4, 5] ]; let hash = {}; let res = []; for (let i原创 2021-08-08 16:07:10 · 442 阅读 · 0 评论 -
JavaScript 数组:最短子数组(和大于等于n)滑动窗口双指针【思路与代码】
思路:(1)定义左右两个指针,一开始都指向头部。(2)右指针遍历数组。(右指针没走到头,就一直遍历)(3)若找到满足条件的子数组,记录min,并将左指针右移1。(4)若还满足条件,继续右移左指针,更新min,一直到不满足条件为止。(5)然后右指针继续遍历。重复3、4步骤(6)右指针遍历完毕后,结束。返回min。//注释版function minSubArrayLen (target, nums) { // 数组长度 const len = nums.length; ..原创 2021-08-06 16:40:50 · 373 阅读 · 0 评论 -
JavaScript 数组:找出数组中哪两个数交换顺序了【思路与代码】
//给定一个排序数组//输出里面交换顺序的是哪两个数字//例:输入:[2,6,4,5,3]//输出:2 5//因为第二个数和第五个数交换顺序了思路:左右两个指针,分别向里缩进,找出第一个反序的数字,推入结果数组。let arr=[2,6,4,5,3,9,10,11]let res=[];let left=0;let right=arr.length-1;while(left<arr.length+1){ if(arr[left]>arr[left+1]){原创 2021-07-31 21:39:20 · 398 阅读 · 0 评论 -
JavaScript 数组:螺旋矩阵 【思路与代码】
给你一个 m 行 n 列的矩阵 matrix ,请按照 顺时针螺旋顺序 ,返回矩阵中的所有元素。思路:判断出路线都是有固定方向的 先→再↓再←再↑再→…一直循环到没数字因此定义4个方向边界 当触及边界时即按固定方向转向 且其对应的边界值向内收缩1若没触及边界 即按自身方向继续行走 改变坐标值直到触边界/数字全部遍历过function spiralOrder (matrix) { let res=[],i=0,j=0; let m=matrix[0].length-1,n=ma原创 2021-07-30 23:04:59 · 466 阅读 · 0 评论 -
JavasScript 数组:合并有序数组【思路与代码】
Leetcode AC代码:var merge = function(nums1, m, nums2, n) { nums1.splice(m,n); //nums1.push.apply(nums1,nums2); nums1.push(...nums2); nums1.sort((a,b)=>a-b)};注意:不能用普通的方法,因为力扣这道题规定了@return {void} Do not return anything, modify nums1 in-pla..原创 2021-07-29 22:55:03 · 369 阅读 · 0 评论 -
JavaScript 数组:数组中的第K个最大元素
思路:排序,取排序后数组第k-1项function findKthLargest (nums, k) { /*const sortnum=nums.sort((a,b)=>(b-a)) return sortnum[k-1];*/ return nums.sort((a,b)=>(b-a))[k-1];};原创 2021-07-20 09:07:47 · 88 阅读 · 0 评论 -
JavaScript 数组:最小的K个数(排序)【思路与知识点总结】
描述给定一个数组,找出其中最小的K个数。例如数组元素是4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4。如果K>数组的长度,那么返回一个空的数组示例1输入:[4,5,1,6,2,7,3,8],4返回值:[1,2,3,4]思路:先排序,再找前k个数function GetLeastNumbers_Solution(input, k){ let res=[]; if(k>input.length) return []; for(let i=原创 2021-07-04 08:02:36 · 396 阅读 · 0 评论 -
JavaScript 数组:旋转数组的最小数字
描述把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素。NOTE:给出的所有元素都大于0,若数组大小为0,请返回0。示例1输入:[3,4,5,1,2]返回值:1思路:遍历数组,只要下一个值比上一个值小,返回该值function minNumberInRotateArray(rotateArray){ if(rotateArray.length===0) return 0; for(let i=1;i原创 2021-06-27 20:54:06 · 114 阅读 · 0 评论 -
JavaScript 数组:数组中只出现一次的数字【思路与知识点总结】
描述一个整型数组里除了两个数字只出现一次,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。示例1 输入:[1,4,1,6] 返回值: [4,6]说明:返回的结果中较小的数排在前面思路:哈希数组记录每个数字出现的次数,将出现一次的数字推入结果数组。function FindNumsAppearOnce( array ) { let hash=[]; for(let i=0;i<array.length;i++){ if(!hash[array[原创 2021-06-18 09:18:37 · 678 阅读 · 0 评论 -
JavaScript 数组:调整数组顺序使奇数位于偶数前面【两种方法,思路与知识点总结】
描述输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。示例1输入:[1,2,3,4] 返回值:[1,3,2,4]示例2输入:[2,4,6,5,7] 返回值:[5,7,2,4,6]思路:将奇数和偶数分别推入两个数组,最后再将数组相连function reOrderArray( array ) { let arr1=[]; let arr2=[]; f原创 2021-06-18 09:01:44 · 652 阅读 · 0 评论 -
JavaScript 数组:数字在升序数组中出现的次数【思路与知识点总结】
描述统计一个数字在升序数组中出现的次数。示例1输入:[1,2,3,3,3,3,4,5],3 返回值:4思路:某数在某数组中的最后一个索引减去第一个索引+1function GetNumberOfK(data, k){ let start=data.indexOf(k); let end=data.lastIndexOf(k); if(start==-1&&end==-1) return 0; else return end-start+1;原创 2021-06-17 20:05:20 · 177 阅读 · 0 评论 -
JavaScript 数组:两数之和:和为S的两个数字【两种方法】
描述输入一个递增排序的数组和一个数字S,在数组中查找两个数,使得他们的和正好是S,如果有多对数字的和等于S,返回两个数的乘积最小的,如果无法找出这样的数字,返回一个空数组即可。返回值描述:对应每个测试案例,输出两个数,小的先输出。示例1 输入:[1,2,4,7,11,15],15 返回值:[4,11]思路:正常的暴力思路,由于题目中提供的是排好序的数组,所以不用考虑”返回两个数的乘积最小的“ 或者“对应每个测试案例,输出两个数,小的先输出”。所以,如果题目不提供排好序的数组,可以先进行排序处理。原创 2021-06-17 19:40:45 · 214 阅读 · 0 评论 -
JavaScript 数组:数组中的逆序对(学习归并排序后完善)
描述在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对。输入一个数组,求出这个数组中的逆序对的总数P。并将P对1000000007取模的结果输出。 即输出P%1000000007对于50%的数据,size≤10^4对于100%的数据,size≤10^5输入描述:题目保证输入的数组中没有的相同的数字示例1: 输入:[1,2,3,4,5,6,7,0] 返回值:7思路一:暴力循环:超时不ACfunction InversePairs(data){ let re原创 2021-06-17 19:22:17 · 137 阅读 · 0 评论 -
JavaScript 数组:构建乘积数组【思路与知识点总结】
描述给定一个数组A[0,1,…,n-1],请构建一个数组B[0,1,…,n-1],其中B中的元素B[i]=A[0]A[1]…*A[i-1]A[i+1]…*A[n-1]。不能使用除法。(注意:规定B[0] = A[1] * A[2] * … * A[n-1],B[n-1] = A[0] * A[1] * … * A[n-2];)对于A长度为1的情况,B无意义,故而无法构建,因此该情况不会存在。示例1 输入:[1,2,3,4,5] 返回值:[120,60,40,30,24]思路:注意题干说不能使用除法原创 2021-06-17 18:38:57 · 542 阅读 · 0 评论 -
JavaScript 数组:数组中出现次数超过一半的数字
描述数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如输入一个长度为9的数组[1,2,3,2,2,2,5,4,2]。由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2。你可以假设数组是非空的,并且给定的数组总是存在多数元素。1<=数组长度<=50000示例1输入:[1,2,3,2,2,2,5,4,2] 返回值:2示例2输入:[3,3,3,3,2,2,2] 返回值:3思路:创建一个哈希数组,然后遍历哈希数组,返回哈希数组中值大于原数组一般的数组下标。fu原创 2021-06-17 15:52:24 · 333 阅读 · 0 评论 -
JavaScript 数组:数组中重复的数字【思路与知识点总结与扩展】
描述在一个长度为n的数组里的所有数字都在0到n-1的范围内。 数组中某些数字是重复的,但不知道有几个数字是重复的。也不知道每个数字重复几次。请找出数组中任一一个重复的数字。 例如,如果输入长度为7的数组[2,3,1,0,2,5,3],那么对应的输出是2或者3。存在不合法的输入的话输出-1输入:[2,3,1,0,2,5,3] 返回值: 2说明: 2或3都是对的思路: 新建空数组,循环题目数组,如果空数组对应的值还没有,则置为1,若有,则直接返回该值。由于本题输出任何一个重复的数组都可以,所以,这里原创 2021-06-17 11:15:02 · 781 阅读 · 1 评论 -
JavaScript 数组:寻找峰值
描述山峰元素是指其值大于或等于左右相邻值的元素。给定一个输入数组nums,任意两个相邻元素值不相等,数组可能包含多个山峰。找到索引最大的那个山峰元素并返回其索引。假设 nums[-1] = nums[n] = -∞。示例1输入:[2,4,1,2,7,8,4] 返回值:5此题中右边没有值也算山峰(但左边没有值就不算山峰。。此题迷幻,存在问题)思路:从后向前遍历,遍历过程中只要发现某元素比前一个元素大,立即返回此值就是本题答案。function solve( a ) { if(a原创 2021-06-15 10:49:44 · 528 阅读 · 0 评论