JS 100 Quick sort,括弧文字列,連続数


52

quick sort


コースの説明
リスト内の要素を選択します.この均一な要素を軸心(pivot)と呼ぶ.
ピボットを基準として、ピボットより小さい要素はすべてピボットの左側に移動し、ピボットより大きい要素はすべてピボットの右側に移動します.(ピボット中心の左側:ピボットより小さい要素、右側:ピボットより大きい要素)
ピボット以外の左側のリストと右側のリストを並べ替えます.
分割された部分リストに対して、ループコールを使用して並べ替えを繰り返します.
[部分リスト](Partial List)で、もう一度ピボットを決定し、ピボットを基準にして2つの部分リストに分割する手順を繰り返します.
一部のリストが分割できなくなるまで繰り返します.
リストのサイズが0または1になるまで繰り返します.
https://gmlwjd9405.github.io/2018/05/10/algorithm-quick-sort.html
function quickSort(arr){
  if (arr.length <= 1){
    return arr;
  }

  const pivot = arr[0];
  const left = [];
  const right = [];

  for (let i=1; i<arr.length; i++){
    if(i<pivot){
      left.push(arr[i]);
    } else {
      right.push(arr[i]);
    }
  }
  return quickSort(left).concat(pivot, quickSort(right)); 
  //재귀함수로 조건이 맞을때까지 돌려준다.
}

const array = prompt('배열을 입력하세요').split(' ').map(n => parseInt(n, 10));

console.log(quickSort(array));
53

かっこ文字列


括弧文字列とは、括弧記号「{」、「}」、「[」、「]」、「(」、「)」などを指す.カッコの形状が正しい文字列を正しい文字列と呼び、そうでない場合は正しくない文字列と呼ぶ.
()等文字列は正文字列であり、()等文字列は不正文字列である.
(これらの問題では、括弧しか見分けられませんが、括弧と角括弧も見分けなければなりません.)
入力したカッコ文字列が正しい文字列か正しくない文字列かを示す「YES」と「NO」で区切られた文字列を出力します.
function mathBrackets(e){
    let count = 0;
    
    //괄호 개수가 같지 않으면 false
    for (let i=0; i<e.length; i++){
        if (e[i] === '('){
            count++;
        }
        if (e[i] === ')'){
            count--;
        }
    }
    if (count !== 0){
        return false;
    }
    
    let 괄호 = [];
    for (let i in e){
        if (e[i] === '(') {
            괄호.push('(');
        }
            
        if (e[i] === ')') {
            if (괄호.length === 0) {
                return false;
            } // '('보다 ')'더 많아지면 안되니까 '('없이 ')'이게 나오면 안된다.
            괄호.pop();
        }   
    }
    return true;
}
    

const n = prompt('입력해주세요.').split('');

if (mathBrackets(n) === true) {
    console.log('YES');
} else {
    console.log('NO');
}
(()())
())()(
54

れんすう


yes,noで5つの数字が連続しているかどうかを判別するプログラムを作成してください.
入力します.
1 2 3 4 5
出力します.
YES
入力します.
1 4 2 6 3
出力します.
NO
function sol(l){
  l.sort((a,b) => {
    return a-b;
  });

  for (let i=0; i<l.length-1; i++){
    if(l[i]+1 !== l[i+1]){
      return 'NO';
    }
  }
  return 'YES';
}

const n = prompt('입력해주세요').split(' ').map(n => parseInt(n, 10));

console.log(sol(n));
<>