给定一个数组arr,返回arr的最长无重复元素子数组的长度,无重复指的是所有数字都不相同。
子数组是连续的,比如[1,3,5,7,9]的子数组有[1,3],[3,5,7]等等,但是[1,3,7]不是子数组
这个题目主要是考察对数组的操作
不重复
不重复就是直接用数组的方法,判断一下是否存在
let index = a.indexOf(arr[i])
如果存在,就把(0,index+1)的子数组给去掉 indexOf返回的是如果数组里面有这个元素的第一个下标值,假设开始的子数组为[1,2,3,4],如果下一个arr[i]=2,那么它将把[1,2]截断,返回[3,4,2]
if (index !== -1) {
a.splice(0, index + 1)
}
最长
最长 不重复,在这个数组里面可能会存在不同的不重复子数组,所以要取最长
max = Math.max(max,a.length);
max为之前的length [1,2,3,4] 4
a.length 为操作完的length [3,4,2] 3
取最大 4
/**
*
* @param arr int整型一维数组 the array
* @return int整型
*/
function maxLength( arr ) {
// write code here
let max = 1;
let a = [];
for (let i = 0; i < arr.length; i++) {
let index = a.indexOf(arr[i])
if (index !== -1) {
a.splice(0, index + 1)
}
a.push(arr[i])
max = Math.max(max,a.length);
}
return max
}
module.exports = {
maxLength : maxLength
};
531

被折叠的 条评论
为什么被折叠?



