# Contains and removing duplicates in arrays

The problems read as follows, for contains duplicates:

Given an integer array `nums`

, return `true`

if any value appears **at least twice** in the array, and return `false`

if every element is distinct.

**Example 1:**

**Input:** nums = [1,2,3,1]

**Output:** true

**Example 2:**

**Input:** nums = [1,2,3,4]

**Output:** false

**Example 3:**

**Input:** nums = [1,1,1,3,3,4,3,2,4,2]

**Output:** true

**Constraints:**

`1 <= nums.length <= 105`

`-109 <= nums[i] <= 109`

And for remove duplicates:

Given a sorted array (nums), remove the duplicates **in-place** such that each element appears only *once* and returns the new length.

Do not allocate extra space for another array, you must do this by **modifying the input array ****in-place** with O(1) extra memory.

**Clarification:**

Confused why the returned value is an integer but your answer is an array?

Note that the input array is passed in by **reference**, which means a modification to the input array will be known to the caller as well.

Internally you can think of this:

//numsis passed in by reference. (i.e., without making a copy)

int len = removeDuplicates(nums);// any modification tonumsin your function would be known by the caller.

// using the length returned by your function, it prints the firstlenelements.

for (int i = 0; i < len; i++) {

print(nums[i]);

}

**Example 1:**

**Input:** nums = [1,1,2]

**Output:** 2, nums = [1,2]

**Explanation:** Your function should return length = **2**, with the first two elements of *nums* being **1** and **2** respectively. It doesn't matter what you leave beyond the returned length.

**Example 2:**

**Input:** nums = [0,0,1,1,1,2,2,3,3,4]

**Output:** 5, nums = [0,1,2,3,4]

**Explanation:** Your function should return length = **5**, with the first five elements of *nums* being modified to **0**, **1**, **2**, **3**, and **4** respectively. It doesn't matter what values are set beyond the returned length.

**Constraints:**

`0 <= nums.length <= 3 * 104`

`-104 <= nums[i] <= 104`

`nums`

is sorted in ascending order.

Steps for solving contains duplicates are as follows.

create an empty object, loop through the array(nums), check if the number exists in the object,

if exists return true

else

set the as a key with a value of 1

continue until end

return false

As well as my code for solving

`const containsDuplicate = (nums) => {`

let obj = {}

for (let i = 0; i < nums.length; i++) {

if (obj.hasOwnProperty(nums[i])) {

return true

} else {

obj[nums[i]] = 1

}

}

return false;

};

Steps for solving remove duplicates are as follows.

First, to write off edge case if the length of the array is less than or equal to 1 then just return the length it’s either going to be 0 or 1 so it doesn't matter at that point,

Then we have two points in the array and while the second is still within the array,

And while the second point is the same as the first we take out the second point,

And both points go up one index,

Then after the whole loop, we return the length of the array.

My code for solving remove duplicates is as follows:

const removeDuplicates = (nums) => {if (nums.length <= 1) return nums.length;let p1 = 0;let p2 = 1; while (p2 in nums) { while (nums[p2] === nums[p1]) nums.splice(p2, 1); p1++; p2++;}return nums.length;};