每日一题——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
};

消耗时间和内存情况:

相关推荐
放下华子我只抽RuiKe519 小时前
FastAPI 全栈后端(五):后台任务与消息队列
前端·javascript·react.js·ai·前端框架·fastapi·ai编程
洛水水19 小时前
【力扣100题】83.最小栈
算法·leetcode·职场和发展
丷丩19 小时前
MapLibre GL JS第44课:生成并添加缺失图标
前端·javascript·gis·mapblibre gl js
nice_lcj52019 小时前
排序(3)-第三篇:交换排序专题——从冒泡排序到快速排序的效率飞跃
java·数据结构·算法·排序算法
ywl47081208719 小时前
数据结构之链表反转算法
数据结构·算法·链表
牧子川19 小时前
019-JSON-Schema-自动生成
算法·大模型·格式化输出·tools
lhjcsubupt19 小时前
第二十二篇 从随机过程到IMU噪声模型
算法·机器学习·概率论
GoogleDocs19 小时前
ProbeKit Lite 是什么?一款用于检测 AI 中转站真实度的工具
javascript·人工智障
li-xun19 小时前
2026年6月10日博客精选
javascript·人工智能·ui
神仙别闹19 小时前
基于C语言处理机调度算法的实现
服务器·c语言·算法