每日一题——LeetCode1502.判断是否能形成等差数列

方法一 排序

javascript 复制代码
var canMakeArithmeticProgression = function(arr) {
    arr.sort((a,b)=>a-b)
    let diff = arr[1]-arr[0]
    for(let i=1;i<arr.length;i++){
        if(arr[i]-arr[i-1]===diff) continue
        else return false
    }
    return true
};

消耗时间和内存情况:

方法二 数学方法

找出arr里的最大值和最小值,如果最大值等于最小值说明arr里的元素都是相同的diff=0,return true。max!= min,那么用(max-min)/ arr.length-1 可以得出等差数列的差diff

遍历arr里的没一个元素num,对于任意num,它与min的差应该是diff的倍数,并且不能出现相同的倍数,用Set集合保存倍数值,如果出现相同的倍数则return false

javascript 复制代码
var canMakeArithmeticProgression = function(arr) {
    let min=Math.min(...arr)
    let max=Math.max(...arr)
    if(min===max) return true
    if((max-min)%(arr.length-1)!=0) return false
    let diff=(max-min)/(arr.length-1)

    let set = new Set()
    for(let num of arr){
        if((num-min)%diff!=0) return false
        let mult=(num-min)/diff
        if(set.has(mult)) return false
        else set.add(mult)
    }
    return true
};

消耗时间和内存情况:

相关推荐
若梦plus12 分钟前
React19 路由方案与原理详解
前端·javascript·react.js
晴殇i30 分钟前
前端工程师必须掌握的SEO实战指南
前端·javascript·面试
FlyingBird~1 小时前
CocosCreator 之 JavaScript/TypeScript和Java的相互交互
java·javascript·typescript
এ᭄画画的北北1 小时前
力扣-35.搜索插入位置
数据结构·算法·leetcode
cylat1 小时前
Day23 pipeline管道
人工智能·python·算法·机器学习
lucky_jiexia2 小时前
leetcode刷题经验
算法·leetcode·哈希算法
江城开朗的豌豆2 小时前
前端性能救星!用 requestAnimationFrame 丝滑渲染海量数据
前端·javascript·面试
江城开朗的豌豆2 小时前
src和href:这对'双胞胎'属性,你用对了吗?
前端·javascript·面试
蓝澈11212 小时前
数据结构之常用排序算法(冒泡、选择等)
数据结构·算法·排序算法
江城开朗的豌豆2 小时前
forEach遇上await:你的异步代码真的在按顺序执行吗?
前端·javascript·面试