전단 면접 더 이상 어렵 지 않 게 (흔 한 알고리즘)
1. 촬영 평 배열 (다 차원 배열 이 1 차원 배열 로 변 함)
let arr = [1,[2,3,[4],[5,6,[7]]],8]//[1,2,3,4,5,6,7,8]
// ,
// , 。
function flatten(arr, newArr) {
// , 。
newArr = newArr || []
for (let i = 0; i < arr.length; i++) {
// arr[i] , arr[i] newArr push。
// push newArr
typeof arr[i] === 'object' ? flatten(arr[i], newArr) : newArr.push(arr[i])
}
return newArr
}
console.log(flatten(arr))
// , reduce, :https://segmentfault.com/a/1190000017510301 reduce
function flatten1(arr) {
return arr.reduce((newArr, item) => {
return typeof item === 'object' ? newArr.concat(flatten1(item, newArr)) : (newArr.push(item), newArr)
}, [])
}
console.log(flatten1(arr))
//
function flatten2(arr) {
//join [], 。
return arr.join(',').split(',')
}
console.log(flatten2(arr))
// , number 。
2. 문자열 내 () 쌍 이 되 었 는 지 여 부 를 판단 하 는 방법 을 쓰 십시오. true 를 되 돌려 주 는 것 이지 false 를 되 돌려 주 는 것 이 아 닙 니 다.
let str = '(()()())'
let str1 = '(())()())'
//1、
function isTure(str, result = []) {
let arr = str.split('')
for (let i = 0; i < arr.length; i++) {
const item = arr[i];
//
if (item === '(') {
//
result.push(item);
// arr
} else if (item === ')' && result.length != 0) {
//
result.pop()
} else {
// result ,
return false
}
}
return result ? true : false
}
console.log(isTure(str)) //true
console.log(isTure(str1)) //false
2、
function isTure1(str, count = 0) {
let arr = str.split('')
for (let i = 0; i < arr.length; i++) {
const item = arr[i];
if (item === '(') {
count++
} else if (item === ')' && count != 0) {
count--
} else {
return false
}
}
return !count ? true : false
}
console.log(isTure1(str))//true
console.log(isTure1(str1))//false
ok 오늘 나 눔 은 여기까지, 내일 계속!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Thymeleaf 의 일반 양식 제출 과 AJAX 제출텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.