이 드릴에서는 알고리즘의 큰 복잡성을 결정하는 연습을합니다. 각 드릴마다 코드 스 니펫에 기능이 제공되며 코드를 실행하지 않고 분석하여 큰 O 복잡성을 해결할 수 있습니다.
다음 알고리즘의 큰 O를 결정하십시오. 15 명이있는 방에 앉아 있습니다. 당신은 당신의 강아지, 바람직하게는 같은 품종의 놀이 친구를 찾고 싶습니다. 그래서 당신은 15 명 중 누군가가 당신의 개와 같은 품종을 가지고 있는지 알고 싶습니다. 당신은 일어 서서 소리를 지르고, 여기에 황금 리트리버가 있고 내 황금의 플레이 데이트가되고 싶은 사람. 누군가가 외칩니다 - "나는 그를 데려 오게되어 기쁘다"
다음 알고리즘의 큰 O를 결정하십시오. 15 명이있는 방에 앉아 있습니다. 당신은 같은 품종 인 개를위한 놀이 친구를 찾고 싶습니다. 그래서 당신은 15 명 중 누군가가 당신의 개와 같은 품종을 가지고 있는지 알고 싶습니다. 당신은 첫 번째 사람으로 시작하여 골든 리트리버가 있는지 묻습니다. 그는 아니오라고 말합니다. 그러면 다음 사람과 다음 사람에게 물어보십시오. 다음은 황금빛이 있거나 다른 사람이없는 사람을 찾을 때까지 다음 사람에게 물어볼 것입니다.
다음 알고리즘의 큰 O는 무엇입니까? 당신의 대답을 설명하십시오
if (value % 2 === 0) {
return true;
}
else {
return false;
}
}
다음 알고리즘의 큰 O는 무엇입니까? 당신의 대답을 설명하십시오
for (let i = 0; i < arr1.length; i++) {
const el1 = arr1[i];
for (let j = 0; j < arr2.length; j++) {
const el2 = arr2[j];
if (el1 === el2) return true;
}
}
return false;
}
다음 알고리즘의 큰 O는 무엇입니까? 당신의 대답을 설명하십시오
for (let i = 0; i < array.length; i++) {
array[i] *= 2;
}
return array;
}
다음 알고리즘의 큰 O는 무엇입니까? 당신의 대답을 설명하십시오
for (let i = 0; i < array.length; i++) {
if (array[i] === item) {
return i;
}
}
}
다음 알고리즘의 큰 O는 무엇입니까? 당신의 대답을 설명하십시오
for (let i = 0; i < arr.length; i++) {
for(let j = i + 1; j < arr.length; j++) {
console.log(arr[i] + ", " + arr[j] );
}
}
}
다음 알고리즘은 무엇을합니까? 런타임 복잡성은 무엇입니까? 당신의 대답을 설명하십시오
let result = [];
for (let i = 1; i <= num; i++) {
if (i === 1) {
result.push(0);
}
else if (i === 2) {
result.push(1);
}
else {
result.push(result[i - 2] + result[i - 3]);
}
}
return result;
}
이 예에서는 순진한 검색보다 더 정교한 접근법을 사용하여 검색 문제로 돌아갑니다. 입력 배열이 항상 정렬되었다고 가정하십시오. 다음 알고리즘의 큰 O는 무엇입니까? 당신의 대답을 설명하십시오
let minIndex = 0;
let maxIndex = array.length - 1;
let currentIndex;
let currentElement;
while (minIndex <= maxIndex) {
currentIndex = Math.floor((minIndex + maxIndex) / 2);
currentElement = array[currentIndex];
if (currentElement < item) {
minIndex = currentIndex + 1;
}
else if (currentElement > item) {
maxIndex = currentIndex - 1;
}
else {
return currentIndex;
}
}
return -1;
}
다음 알고리즘의 큰 O는 무엇입니까? 당신의 대답을 설명하십시오
return arr[Math.floor(Math.random() * arr.length)];
}
다음 알고리즘은 무엇을합니까? 다음 알고리즘의 큰 O는 무엇입니까? 당신의 대답을 설명하십시오
if (n < 2 || n % 1 !== 0) {
return false;
}
for (let i = 2; i < n; ++i) {
if (n % i === 0) return false;
}
return true;
}
하노이 타워는 매우 유명한 수학 퍼즐입니다 (일부는 게임이라고합니다!). 이것이 어떻게 진행되는지입니다.
모든 막대에 미끄러질 수있는 3 개의 막대와 다양한 크기의 디스크가 있습니다. 퍼즐은 디스크가 하나의로드에서 크기의 오름차순 순서로 깔끔하게 쌓여서 상단의 가장 작은 디스크 (원추형 모양)로 시작합니다. 다른 두 막대는 처음부터 비어 있습니다.
퍼즐의 목표는로드의 전체 스택을 다른 막대 (이전에 쌓아 놓은 원래 막대가 될 수 없음)로 이동하는 것입니다. 이것은 다음 규칙에 따라야합니다.
당신의 작업 :
드릴 JS 파일을 재귀 적으로 반복적으로 해결하십시오.
이 저장소에서 솔루션을 가져 와서 각각의 시간 복잡성 (큰 O)을 식별하십시오.
JS 파일 12의 반복 운동 훈련에서 솔루션을 가져 와서 각각의 시간 복잡성 (큰 O)을 식별하십시오.