H246802 / 30-days-challenge

30天每日打卡
4 stars 0 forks source link

day-23-数组去重 #23

Open H246802 opened 5 years ago

H246802 commented 5 years ago

写一个方法,给定一个排序数组,在原数组上删除重复出现的元素,使得每个元素只出现一次,返回删除重复元素后的数组的长度

要求:

示例: 给定数组nums = [1, 1, 2, 3, 2, 5],函数应该返回新的长度 4,并且原数组 nums 去除了重复出现的数字

var removeDuplicates = function(nums) {
  // your code
}
H246802 commented 5 years ago
var removeDuplicates = function(nums) {
  let obj = {}
  let arr = []
  for(let i = 0; i < nums.length; ++i){
    if(!obj[nums[i]]){
      obj[nums[i]] = true
      arr.push(nums[i])
    }
  }
  return arr.length
}
// 测试用例
var test = [];
for (var i = 0; i < 200; i++) {
    test[i] = Math.floor(Math.random(0,1)*200+1)
}
console.time('test')
removeDuplicates(test)
console.timeEnd('test')



如果数组中存在对象,判断最好应该使用es6的map

var removeDuplicates = function(nums) {
  let map= new Map()
  let arr = []
  for(let i = 0; i < nums.length; ++i){
    if( !map.get(nums[i])){
      map.set(nums[i],true)
      arr.push(nums[i])
    }
  }
  return arr.length
}
// 测试用例
var test = [];
for (var i = 0; i < 200; i++) {
    test[i] = Math.floor(Math.random(0,1)*200+1)
}
console.time('test')
removeDuplicates(test)
console.timeEnd('test')