diff --git a/README.md b/README.md index 20e5efe..cd1ea99 100644 --- a/README.md +++ b/README.md @@ -127,6 +127,7 @@ A collection of JavaScript problems and solutions for studying algorithms. - [H-Index](src/array/h-index.js) - [H-Index II](src/array/h-index-ii.js) - [Pour Water](src/array/pour_water.js) +- [Inplace Array Reversal](src/array/inplace-reverse-array.js) ### Matrix diff --git a/src/array/inplace-reverse-array.js b/src/array/inplace-reverse-array.js new file mode 100644 index 0000000..66bf09c --- /dev/null +++ b/src/array/inplace-reverse-array.js @@ -0,0 +1,50 @@ +/** + * Reverse Inplace Array + * + * Given an Array arr. + * + * We want to reverse order of elements inside . + * We will also take edge cases into account + * For eg:- In case parameter passed is null or undefined we may want to throw error + * In case parameter passed is not an array + * In case parameter passed has length 0 + * + * For example, given + * + * arr = [1,2,3,4,5,6,7,8,9] + * We should return + * [9,8,7,6,5,4,3,2,1] + * + */ + +/** + * @param {number[]} arr + * @return {number[]} arr + */ +function inPlaceArrayReverse(arr) { + // edge cases + if(!arr){ + throw new Error('undefined input'); + } + + if(!Array.isArray(arr)){ + throw new Error('not an array') + } + + if(arr.length === 0){ + throw new Error('array empty') + } + + var len = arr.length - 1; + for(let j=0; j