전단 면접 더 이상 어렵 지 않 게 (흔 한 알고리즘)

어제 알고리즘 문 제 를 하나 풀 었 는데, 오늘 이어서 이야기 합 시다!몇 가지 더 이야기 하 다.
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 오늘 나 눔 은 여기까지, 내일 계속!

좋은 웹페이지 즐겨찾기