Skip to content
This repository has been archived by the owner on Mar 21, 2021. It is now read-only.

solve 2 ways #112

Merged
merged 1 commit into from Jul 5, 2020
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
35 changes: 35 additions & 0 deletions algorithms/leet-code/explore/arrays-101/height-checker.js
@@ -0,0 +1,35 @@
/**
* @param {number[]} heights
* @return {number}
*/

function merge(node1, node2) {
const result = [];
while (node1.length > 0 && node2.length > 0) {
if (node1[0] < node2[0]) {
result.push(node1.shift());
} else {
result.push(node2.shift());
}
}
return result.concat(node1.length ? node1 : node2);
}

function mergeSort(arr) {
//base case
if (arr.length <= 1) return arr;

const middle = Math.floor(arr.length / 2); // get the middle item of the array rounded down
const left = arr.slice(0, middle); // items on the left side
const right = arr.slice(middle); // items on the right side

return merge(mergeSort(left), mergeSort(right));
}

const heightChecker = function (heights) {
let moveCnt = 0;
mergeSort(heights).forEach((height, idx) => {
if (height !== heights[idx]) moveCnt++;
});
return moveCnt;
};
38 changes: 38 additions & 0 deletions algorithms/leet-code/explore/arrays-101/rotate-array.js
@@ -0,0 +1,38 @@
// /**
// * @param {number[]} nums
// * @param {number} k
// * @return {void} Do not return anything, modify nums in-place instead.
// */
// const rotate = function (nums, k) {
// //base case
// if (k === 0) return nums;

// while (k) {
// nums.unshift(nums.pop());
// k--;
// }
// };

/**
* @param {number[]} nums
* @param {number} k
* @return {void} Do not return anything, modify nums in-place instead.
*/
const rotate = function (nums, k) {
//base case
if (k === 0) return nums;

//if rotation num exceeds array length offset by array length
const rotations = k > nums.length ? k - nums.length : k;

// 3 steps

// reverse entire array
nums.reverse();

//now reverse the numbers up until the rotation number (0 to k)
nums.unshift(...nums.splice(0, rotations).reverse());

//now reverse k to n
nums.push(...nums.splice(rotations, nums.length - 1).reverse());
};