From 4dd7234ef74ef393d500ae2362bb56c100635ffc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tai-Yu=20Chen=20=28=E9=99=B3=E6=B3=B0=E5=AE=87=29?= Date: Wed, 18 May 2016 20:17:29 +0800 Subject: [PATCH] problem 80: Remove Duplicates II --- 80_remove_duplicates.js | 39 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 80_remove_duplicates.js diff --git a/80_remove_duplicates.js b/80_remove_duplicates.js new file mode 100644 index 0000000..ce2932f --- /dev/null +++ b/80_remove_duplicates.js @@ -0,0 +1,39 @@ +const testProblems = [{ + input: [1, 1, 1], + output: [1, 1] +}, { + input: [1, 1, 1, 2, 2, 2, 3], + output: [1, 1, 2, 2, 3] +}, { + input: [1, 2, 3, 4, 5, 6, 7], + output: [1, 2, 3, 4, 5, 6, 7] +}, { + input: [1, 1, 1, 1], + output: [1, 1] +}, { + input: [1, 1, 1, 1, 2], + output: [1, 1, 2] +}] + +var removeDuplicates = function(nums) { + var indexsToBeRemoved = [] + var deleteMode = false + var alreadyDelete = 0 + nums.reduce((prev, cur, curIdx) => { + if (prev === cur && deleteMode) { + indexsToBeRemoved.push(curIdx) + } else if (prev === cur) { + deleteMode = true + } else { + deleteMode = false + } + return cur + }, 'x') + indexsToBeRemoved.map((idx, shift) => nums.splice(idx - shift, 1)) + return nums.length +}; + +testProblems.map(problem => { + var answer = removeDuplicates(problem.input) + console.log(`Answer: ${JSON.stringify(answer)} | Expected: ${JSON.stringify(problem.output)}`) +})