1502. 判断能否形成等差数列
思路
首先先用sort()进行排序,得到一个有序数组
arr.sort((a,b) => a-b)
通过arr[0]-arr[1]得到公差保存,然后循环中比较arr[i]-arr[i+1]是否等于公差
const diff = arr[0]-arr[1]for (let i = 0; i <arr.length ; i++) {if(arr[i+1] === undefined) breakif(diff !== arr[i]-arr[i+1]) return false}return true
完整代码
let fn1 = function (arr) {arr.sort((a,b) => a-b)const diff = arr[0]-arr[1]for (let i = 0; i <arr.length ; i++) {if(arr[i+1] === undefined) break //这句有优化空间if(diff !== arr[i]-arr[i+1]) return false}return true};
优化
看了前几位大佬的答案,在思路上没有差别,在语法上可以稍稍优化一下,改变i的初始值即可
for (let i = 2; i <arr.length ; i++) {if(diff !== arr[i]-arr[i-1]) return false}
最终代码
let fn2 = function (arr) {arr.sort((a,b) => a-b)const diff = arr[1]-arr[0]for (let i = 2; i <arr.length ; i++) {if(diff !== arr[i]-arr[i-1]) return false}return true};
解释
在速度上好像快了一丢丢,也省了一条语句
