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

消耗时间和内存情况:

相关推荐
梨子串桃子_1 小时前
推荐系统学习笔记 | PyTorch学习笔记
pytorch·笔记·python·学习·算法
夏鹏今天学习了吗2 小时前
【LeetCode热题100(83/100)】最长递增子序列
算法·leetcode·职场和发展
情缘晓梦.2 小时前
C语言指针进阶
java·开发语言·算法
美酒没故事°3 小时前
vue3拖拽+粘贴的综合上传器
前端·javascript·typescript
北邮刘老师3 小时前
智能体治理:人工智能时代信息化系统的全新挑战与课题
大数据·人工智能·算法·机器学习·智能体互联网
AlenTech3 小时前
155. 最小栈 - 力扣(LeetCode)
算法·leetcode·职场和发展
mit6.8243 小时前
正反两次扫描|单调性cut
算法
Yzzz-F4 小时前
牛客小白月赛127 E
算法
大锦终4 小时前
递归回溯综合练习
c++·算法·深度优先
Keep__Fighting4 小时前
【神经网络的训练策略选取】
人工智能·深度学习·神经网络·算法