首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

【JavaScript】内置对象 - 数组对象 ④ ( 索引方法 | 查找给定元素的第一个索引 | 查找给定元素的最后一个索引 | 索引方法案例 - 数组元素去重 )

文章目录 一、索引方法 1、查找给定元素的第一个索引 - indexOf() 2、查找给定元素的最后一个索引 - lastIndexOf() 二、索引方法案例 - 数组元素去重 1、需求分析 2、代码实现...一、索引方法 1、查找给定元素的第一个索引 - indexOf() 调用 Array 数组对象 的 indexOf() 方法 可以 查找给定元素的第一个索引 , 语法如下 : indexOf(searchElement...; // 输出 : 1 console.log(indexOf5); // 查找数组中 索引 1 的元素后 , 第一个 5 的索引值...- lastIndexOf() 调用 Array 数组对象 的 lastIndexOf() 方法 可以 查找给定元素的最后一个索引 , 语法如下 : lastIndexOf(searchElement...给定一个数组 , [9, 5, 2, 7, 5] 将数组中的重复元素删除 , 也就是将上述数组中 重复的元素 5 删除 ; 创建一个新的空数组 , 遍历旧数组 , 遍历每个旧数组元素时 , 查询该元素是否在新数组中

17510

2022-06-25:给定一个正数n, 表示有0~n-1号任务, 给定一个长度为n的数组time,time表示i号任务做完的时间, 给定一个二维数组mat

2022-06-25:给定一个正数n, 表示有0~n-1号任务,给定一个长度为n的数组time,timei表示i号任务做完的时间,给定一个二维数组matrix,matrixj = {a, b} 代表:a...任务想要开始,依赖b任务的完成,只要能并行的任务都可以并行,但是任何任务只有依赖的任务完成,才能开始。...返回一个长度为n的数组ans,表示每个任务完成的时间。输入可以保证没有循环依赖。来自美团。3.26笔试。答案2022-06-25:拓扑排序基础上做动态规划。代码用rust编写。...[0,1],vec![0,2],vec![1,2],vec![3,1],vec!...[]; for _ in 0..n { in0.push(0); } for line in matrix.iter() { nexts[line[1] as

36810
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    2021-04-17:给定一个整型数组 arr,数组中的每个值都为正数,表示完成

    2021-04-17:给定一个整型数组 arr,数组中的每个值都为正数,表示完成一幅画作需要的时间,再 给定 一个整数 num,表示画匠的数量,每个画匠只能画连在一起的画作。...所有的画家 并行工作,请 返回完成所有的画作需要的最少时间。【举例】arr=3,1,4,num=2。最好的分配方式为第一个画匠画 3 和 1,所需时间为 4。第二个画匠画 4,所需时间 为 4。...如果分配方式为第一个画匠画 3,所需时 间为 3。第二个画 匠画 1 和 4,所需的时间为 5。那么最少时间为 5,显然没有第一 种分配方式好。所以返回 4。arr=1,1,1,4,3,num=3。...最好的分配方式为第一个画匠画前三个 1,所需时间为 3。第二个画匠画 4,所需时间 为 4。 第三个画匠画 3,所需时间为 3。返回 4。 福大大 答案2021-04-17: 二分法。...分割数组的最大值

    1.1K20

    2023-01-14:给定一个二维数组map,代表一个餐厅,其中只有0、1两种值map == 0 表示(i,j)位置

    2023-01-14:给定一个二维数组map,代表一个餐厅,其中只有0、1两种值 map[i][j] == 0 表示(i,j)位置是空座 map[i][j] == 1 表示(i,j)位置坐了人 根据防疫要求...,任何人的上、下、左、右,四个相邻的方向都不能再坐人 但是为了餐厅利用的最大化,也许还能在不违反防疫要求的情况下,继续安排人吃饭 请返回还能安排的最大人数 如果一开始的状况已经不合法,直接返回-1 比如...: 1 0 0 0 0 0 0 1 不违反防疫要求的情况下,这个餐厅最多还能安排2人,如下所示,X是新安排的人 1 0 X 0 0 X 0 1 再比如: 1 0 0 0 0 1 0 0 0 0 0 0...X 0 X 0 数据范围 : 1 的行、列 <= 20 来自华为。...("测试结束"); } // 为了测试,普通方法 // 普通的状态压缩动态规划 // 每一行用dfs的方法 // 体系学习班,章节44 : 状态压缩的动态规划,贴瓷砖问题类似 fn most_seats1

    32030

    2021-05-19:给定一个非负数组成的数组,长度一定大于1

    2021-05-19:给定一个非负数组成的数组,长度一定大于1,想知道数组中哪两个数&的结果最大。返回这个最大结果。时间复杂度O(N),额外空间复杂度O(1)。...福大大 答案2021-05-19: 因为是正数,所以不用考虑符号位(31位) 首先来到30位,假设剩余的数字有N个(整体),看看这一位是1的数,有几个 如果有0个、或者1个 说明不管怎么在数组中选择,任何两个数...&的结果在第30位上都不可能有1了 答案在第30位上的状态一定是0, 保留剩余的N个数,继续考察第29位,谁也不淘汰(因为谁也不行,干脆接受30位上没有1的事实) 如果有2个, 说明答案就是这两个数(直接返回答案...现在来到i位,假设剩余的数字有M个,看看这一位是1的数,有几个 如果有0个、或者1个 说明不管怎么在M个数中选择,任何两个数&的结果在第i位上都不可能有1了 答案在第i位上的状态一定是0, 保留剩余的M...答案在第i位上的状态一定是1, 只把这K个数作为剩余的数,继续考察第i-1位,其他数都淘汰掉。 代码用golang编写。

    31810

    2022-06-25:给定一个正数n, 表示有0~n-1号任务,给定一个长度为n的数组time,time表示i号任务做完的

    2022-06-25:给定一个正数n, 表示有0~n-1号任务, 给定一个长度为n的数组time,time[i]表示i号任务做完的时间, 给定一个二维数组matrix, matrix[j] = {a,...b} 代表:a任务想要开始,依赖b任务的完成, 只要能并行的任务都可以并行,但是任何任务只有依赖的任务完成,才能开始。...返回一个长度为n的数组ans,表示每个任务完成的时间。 输入可以保证没有循环依赖。 来自美团。3.26笔试。 答案2022-06-25: 拓扑排序基础上做动态规划。 代码用rust编写。...[0,1],vec![0,2],vec![1,2],vec![3,1],vec!...; for _ in 0..n { in0.push(0); } for line in matrix.iter() { nexts[line[1]

    17630

    2021-11-22:给定一个正数数组arr,表示每个小朋友的得

    2021-11-22:给定一个正数数组arr,表示每个小朋友的得分; 任何两个相邻的小朋友,如果得分一样,怎么分糖果无所谓,但如果得分不一样,分数大的一定要比分数少的多拿一些糖果; 假设所有的小朋友坐成一个环形...,返回在不破坏上一条规则的情况下,需要的最少糖果数。...答案2021-11-22: 1.求最小值的序号。 2.最小值放首位两端,构造n+1的数组arr2。 3.从左往右遍历arr2。left数组。 4.从右往左遍历arr2。right数组。...5.遍历根据left和right序号相同位置求最大值,累加n次,就是需要返回的值。 时间复杂度:O((N)。 额外空间复杂度:O(N)。 代码用golang编写。...(nums[i] > nums[i-1], left[i-1]+1, 1) } right := make([]int, n+1) right[n] = 1 for i

    19510

    Java实现给定一个无序的整数数组,找到其中最长上升子序列的长度。

    输入: [10,9,2,5,3,7,101,18] 输出: 4 解释: 最长的上升子序列是 [2,3,7,101],它的长度是 4 ---- ---- 思路非常简单哈: 1 首先开辟一个新数组...,长度等于nums //用来存储没一个值得最大上升子序列数目 ---- 2 首先把新数组的每一个值赋值为1 ,//最小上升子序列是他自己 也就是1 ---- 3 遍历i i前面的如果有比他小的...,记录下 更新到新数组中+1, 如果小于前面的子序列长度, 那么取前面最长的子序列 ---- 4 最后返回新数组中最大值就好了 也可以放到第2个for循环中, 不断更新最大值 最后直接输出了...==0){ return 0; } int[] dp=new int[nums.length]; Arrays.fill(dp,1)...if(nums[j]<nums[i]){ dp[i]=Math.max(dp[i],dp[j]+1); }

    90920

    2021-10-26:给定一个数组arr,arr = j,表示第i号试题的

    2021-10-26:给定一个数组arr,arri = j,表示第i号试题的难度为j。给定一个非负数M。想出一张卷子,对于任何相邻的两道题目,前一题的难度不能超过后一题的难度+M。...返回所有可能的卷子种数。 答案2021-10-26: 方法1:递归。纯暴力方法,生成所有排列,一个一个验证。 方法2:从左往右的动态规划 + 范围上二分。时间复杂度O(N * logN)。...生成所有排列,一个一个验证 func ways1(arr []int, m int) int { if len(arr) == 0 { return 0 } return...all } // arr[0..r]上返回>=t的数有几个, 二分的方法 // 找到 >=t 最左的位置a, 然后返回r - a + 1就是个数 func num(arr []int, r int,...+ 1 } } return r - a + 1 } // 时间复杂度O(N * logV) // 从左往右的动态规划 + IndexTree func ways3(

    29810

    2023-01-14:给定一个二维数组map,代表一个餐厅,其中只有0、1两种值 map == 0 表示(i,j)位置是空座 map =

    2023-01-14:给定一个二维数组map,代表一个餐厅,其中只有0、1两种值mapi == 0 表示(i,j)位置是空座mapi == 1 表示(i,j)位置坐了人根据防疫要求,任何人的上、下、左、...右,四个相邻的方向都不能再坐人但是为了餐厅利用的最大化,也许还能在不违反防疫要求的情况下,继续安排人吃饭请返回还能安排的最大人数如果一开始的状况已经不合法,直接返回-1比如:1 0 0 00 0 0 1...不违反防疫要求的情况下,这个餐厅最多还能安排2人,如下所示,X是新安排的人1 0 X 00 X 0 1再比如:1 0 0 0 0 10 0 0 0 0 00 1 0 0 0 10 0 0 0 0 0不违反防疫要求的情况下...,这个餐厅最多还能安排7人,如下所示,X是新安排的人1 0 0 X 0 10 0 X 0 X 00 1 0 X 0 1X 0 X 0 X 0数据范围 : 1 的行、列 的状态压缩动态规划// 每一行用dfs的方法// 体系学习班,章节44 : 状态压缩的动态规划,贴瓷砖问题类似fn most_seats1(map:

    51200

    2022-04-17:给定一个数组arr,其中的值有可能正、负、0,给定一个正数k。返回累加和>=k的所有子数组中,最短的子数组长度。来自字节跳动。力扣8

    2022-04-17:给定一个数组arr,其中的值有可能正、负、0, 给定一个正数k。 返回累加和>=k的所有子数组中,最短的子数组长度。 来自字节跳动。力扣862。...答案2022-04-17: 看到子数组,联想到结尾怎么样,开头怎么样。 预处理前缀和,单调栈。 达标的前缀和,哪一个离k最近? 单调栈+二分。复杂度是O(N*logN)。 双端队列。...[]; for i in 0..N + 1 { sum.push(0); } for i in 0..N { sum[i + 1] = sum[i...= 0; for i in 0..N + 1 { // 头部开始,符合条件的,从头部弹出!...} // 尾部开始,前缀和比当前的前缀和大于等于的,从尾部弹出!

    1.4K10

    2024-12-12:找出唯一性数组的中位数。用go语言,给定一个整数数组 nums,找出唯一性数组并计算其中位数。 唯一性数组

    2024-12-12:找出唯一性数组的中位数。用go语言,给定一个整数数组 nums,找出唯一性数组并计算其中位数。...唯一性数组是一个按元素从小到大排序的数组,包含了所有 nums 的非空子数组中不同元素的个数。 中位数定义为有序数组的中间元素,如果有两个中间元素则取较小的那个。...大体步骤如下: 1.首先定义了一个函数medianOfUniquenessArray,接受一个整数数组nums作为参数,返回计算得到的中位数。...4.在check函数中,创建了一个map cnt 来统计不同元素出现的次数,用 tot 记录遍历过的子数组数量。 5.使用双指针i和j来维护子数组范围,其中i向前遍历,j向后收缩。...总的时间复杂度:O(nlogn),其中n为数组nums的长度,因为在二分查找过程中每次都通过check函数来判断需要的t值,每次check函数的时间复杂度为O(n)。

    6110

    2021-07-04:股票问题1。给定一个数组 prices ,它的第 i 个元素 prices 表示一支给定股票第 i

    2021-07-04:股票问题1。给定一个数组 prices ,它的第 i 个元素 prices[i] 表示一支给定股票第 i 天的价格。...你只能选择某一天 买入这只股票,并选择在未来的某一个不同的日子卖出该股票。设计一个算法来计算你所能获取的最大利润。返回你可以从这笔交易中获取的最大利润。如果你不能获取任何利润,返回 0 。...遍历的时候,记录最小值,然后收集所有的【prices[i]-最小值】,其中的最大值就是需要返回的值。 时间复杂度:O(N)。空间复杂度:O(1)。 代码用golang编写。...代码如下: package main import "fmt" func main() { arr := []int{7, 1, 5, 3, 6, 4} ret := maxProfit...(arr) fmt.Println(ret) } func maxProfit(prices []int) int { N := len(prices) if N 1 {

    67720

    2025-01-17:构成整天的下标对数目Ⅰ。用go语言,给定一个整数数组 hours,其中每个元素表示以小时为单位的时间,要求

    用go语言,给定一个整数数组 hours,其中每个元素表示以小时为单位的时间,要求返回一个整数,表示满足条件 i 的整数倍的下标对 (i,...1.首先,创建一个长度为 24 的数组 m,用于记录每个小时数模 24 的次数。 2.将第一个小时数小时数模 24 的出现次数加一,即 m[hours[0]%24]++。...8.返回 ans,即可得到符合条件的下标对数量。 总的时间复杂度为 O(n),其中 n 为 hours 数组的长度,因为需要遍历整个数组一次。...总的额外空间复杂度为 O(1),因为所需的额外空间是固定大小的数组大小与常数变量。...24 的数组 m[hours[0] % 24]++; int ans = 0; for (int i = 1; i < size; i++) { int hi

    4910

    2022-06-04:给定一个数字n,表示一开始有编号1~n的树木,列成一条直线,给定一个有序数组arr,表示现在哪些树已经没了

    2022-06-04:给定一个数字n,表示一开始有编号1~n的树木,列成一条直线, 给定一个有序数组arr,表示现在哪些树已经没了,arr[i]一定在[1,n]范围, 给定一个数字m,表示你可以补种多少棵树...返回补种之后,最长的连续树木,有多少棵。 答案2022-06-04: 连续补种。滑动窗口。 代码用rust编写。...longest_trees(n: isize, m: isize, arr: &mut Vec) -> isize { let mut ans = 0; let mut start = 1;...) as isize { ans = get_max(ans, arr[j as usize] - start); start = arr[i as usize] + 1;...i += 1; j += 1; } ans = get_max(ans, n - start + 1); return ans; } fn get_max

    12730
    领券