leetcode刷题吧

本文介绍了一种从排序数组中去除重复项的方法,并提供了一行代码实现数组去重的ES6技巧。此外,还探讨了设计算法以在股票价格波动中寻找最大利润的问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

排列

从排序的数组中删除重复项
/**
 * @param {number[]} nums
 * @return {number}
 */
var removeDuplicates = function(nums) {
    const ret=[];
    for(let v of nums){
        
         if(ret.indexOf(nums[v]) === -1){
            ret.push(nums[v]);
           
        }
          console.log(ret);
    }
       console.log(ret);
           return ret;
     
};

/**
 * @param {number[]} nums
 * @return {number}
 */
var removeDuplicates = function(nums) {
   
  var tmpObj = {};
var result = [];
 Array.from(new Set(nums)).forEach(function(a) {
  var key = (typeof a) + a;
  if (!tmpObj[key]) {
    tmpObj[key] = true;
    result.push(a);
  }
});
console.log(result);
    
};

一行代码实现数组去重(ES6)

  1. ES6中新增了Set数据结构,类似于数组,但是 它的成员都是唯一的 ,其构造函数可以接受一个数组作为参数,如:
 let array = [1, 1, 1, 1, 2, 3, 4, 4, 5, 3];
 let set = new Set(array);
 console.log(set);
 // => Set {1, 2, 3, 4, 5}
  1. ES6中Array新增了一个静态方法Array.from,可以把类似数组的对象转换为数组,如通过querySelectAll方法得到HTML DOM Node List,以及ES6中新增的Set和Map等可遍历对象,如:
 let set = new Set();
 set.add(1).add(2).add(3);
 let array = Array.from(set);
 console.log(array);
 // => [1, 2, 3]

于是,现在我们可以用一行代码实现数组去重了:

let array = Array.from(new Set([1, 1, 1, 2, 3, 2, 4]));
console.log(array);
// => [1, 2, 3, 4]

附:ES5实现数组去重

var array = [1, '1', 1, 2, 3, 2, 4];
var tmpObj = {};
var result = [];
array.forEach(function(a) {
  var key = (typeof a) + a;
  if (!tmpObj[key]) {
    tmpObj[key] = true;
    result.push(a);
  }
});
console.log(result);
// => [1, "1", 2, 3, 4]
最好的时机买卖股票II

假设你有一个数组,其中第i 个元素是第i天给定股票的价格。
设计一个算法来找到最大的利润。您可以根据需要完成尽可能多的交易(即多次买入和卖出一次股票)。但是,您不可以同时进行多笔交易(即您必须在再次购买之前出售股票)。

var maxProfit = function(prices) {
   return Math.max(prices)
};

下面是扩展运算符取代apply方法的一个实际的例子,应用Math.max方法,简化求出一个数组最大元素的写法。

// ES5 的写法
Math.max.apply(null, [14, 3, 77])

// ES6 的写法
Math.max(...[14, 3, 77])

// 等同于
Math.max(14, 3, 77);

上面代码中,由于 JavaScript 不提供求数组最大元素的函数,所以只能套用Math.max函数,将数组转为一个参数序列,然后求最大值。有了扩展运算符以后,就可以直接用Math.max了。

我还会回来的

转载于:https://www.cnblogs.com/yc8930143/p/8531663.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值