Задача B
function findMM(arr) {
let minDelta = Infinity, maxDelta = -Infinity;
let i1 = 0, i2 = 0, j1 = 0; j2 = 0;
let iMax = 0; // индекс максимального элемента
let iMin = 0; // индекс минимального элемента
for (let j = 1; j < arr.length; ++j) {
// минимальная дельта - разница между минимальным элементом
// среди ранее найденных, и текущим
if (arr[iMin] - arr[j] < minDelta) {
i1 = iMin;
j1 = j;
minDelta = arr[iMin] - arr[j];
}
// максимальная дельта - разница между максимальным элементом
// среди ранее найденных, и текущим
if (arr[iMax] - arr[j] > maxDelta) {
i2 = iMax;
j2 = j;
maxDelta = arr[iMax] - arr[j];
}
if (arr[j] < arr[iMin]) {
iMin = j;
}
if (arr[j] > arr[iMax]) {
iMax = j;
}
}
return [[i1, j1], [i2, j2]];
}
Микро таски же должны быть в первую очередь после синхр кода ?
.used-p-c:valid {
....
}
const addTimeDescription = (str) =>
str.replace(/\b\d{1,2}:\d{2}\b(?!.*?\b\d{1,2}:\d{2}\b)/, '$& (время местное)');
// пример использования
const originalString = " с 14:01 к 15:00 работать по плановому";
const updatedString = addTimeDescription(originalString); // ' с 14:01 к 15:00 (время местное) работать по плановому'
/^.*\b\d\d?:\d\d\b/
function createQueue(onMatch) {
const queue = [];
const checkItem = (item, range, i) => {
if (item[0] <= range[0] && range[1] <= item[1]) {
queue.splice(i, 1);
onMatch(range, item);
return true;
}
return false;
};
const add = (range) => {
for (let i = 0; i < queue.length; ++i) {
if (checkItem(queue[i], range, i) || checkItem(range, queue[i], i)) {
return;
}
}
queue.push(range);
};
return {queue, add};
}
// пример использования
const q = createQueue((a, b) => console.log(a, b));
q.add([2, 4]);
q.add([3, 5]);
q.add([4, 4]); // log ([4, 4], [2, 4])
const result = JSON.parse(
'(1 (20 (400 5 60 (700) 108 (90)) 3))'
.replaceAll('(', '[')
.replaceAll(')', ']')
.replace(/(\d|\])(?=\s+\d|\s*\[)/g, '$&,'));
function getTree(str) {
const tokens = str.match(/\d+|[()]/g);
const stack = [];
let currentArr = null;
for(let i = 0; i < tokens.length; ++i) {
const token = tokens[i];
if (token === ')') {
if (!stack.length) {
return currentArr;
}
currentArr = stack.pop();
} else if (token === '(') {
const newArr = [];
if (currentArr) {
currentArr.push(newArr);
stack.push(currentArr);
}
currentArr = newArr;
} else {
if (currentArr) {
currentArr.push(parseInt(token));
}
}
}
return currentArr;
}
const result = getTree('(1 (20 (400 5 60 (700) 108 (90)) 3))');