首页
学习
活动
专区
工具
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 删除 ; 创建一个数组 , 遍历旧数组 , 遍历每个旧数组元素时 , 查询该元素是否在新数组

6910

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

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

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

31330

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编写。

30110

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]

16230

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

18010

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); }

85920

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(

28310

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 <= 矩阵行、列 <= 20来自华为。...("测试结束");}// 为了测试,普通方法// 普通状态压缩动态规划// 每一行用dfs方法// 体系学习班,章节44 : 状态压缩动态规划,贴瓷砖问题类似fn most_seats1(map:

50000

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.3K10

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 {

61520

2023-03-16:给定一个由 0 和 1 组成数组 arr ,将数组分成 3 个非空部分,使得所有这些部分表示相同

2023-03-16:给定一个由 0 和 1 组成数组 arr ,将数组分成 3 个非空部分, 使得所有这些部分表示相同二进制值。...注意,在考虑每个部分所表示二进制时,应当将其看作一个整体, 例如,[1,1,0] 表示十进制中 6,而不会是 3。此外,前导零也是被允许, 所以 [0,1,1] 和 [1,1] 表示相同值。...答案2023-03-16: 给定一个由 0 和 1 组成数组 arr,需要将其分成三个非空部分,使得每个部分中 1 数量相等。如果无法做到,则返回 [-1, -1]。...[start1 - 1, start2] // 返回第一个和第二个子数组结束位置 } 算法分析: 该算法时间复杂度为 O(n),其中 n 是输入数组长度,因为需要遍历整个数组一次。...[1, 5]); ``` 总结和展望: 本文介绍了一种简单算法,可以解决给定一个由 0 和 1 组成数组 arr,需将其分成三个非空部分,使得每个部分中 1 数量相等问题。

24220

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

11430
领券