LeetCode:1502. 判断能否形成等差数列(python3,javascript)
Posted 南岸青栀*
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LeetCode:1502. 判断能否形成等差数列(python3,javascript)相关的知识,希望对你有一定的参考价值。
1502. 判断能否形成等差数列
python3
法1:
排序,记录差值,然后一直比较
class Solution:
def canMakeArithmeticProgression(self, arr: List[int]) -> bool:
#法1先排序
# arr.sort()
# flag = arr[1]-arr[0]
# for i in range(len(arr)-1):
# print(arr[i],arr[i+1],flag)
# if arr[i+1] != (arr[i] + flag):
# return False
# return True
优化一下:
等差数列:前一项+后一项=本项*2
class Solution:
def canMakeArithmeticProgression(self, arr: List[int]) -> bool:
#优化一下
l = len(arr)
if l <= 2:
return True
arr.sort()
for i in range(1,l-1):
if arr[i]*2 != arr[i-1] + arr[i+1]:
return False
return True
javascript
法1:
/**
* @param {number[]} arr
* @return {boolean}
*/
var canMakeArithmeticProgression = function(arr) {
//法1
// arr.sort((a,b)=>a-b)
// const num = arr[1] - arr[0]
// for(let i = 2;i<arr.length;i++){
// if(num != arr[i]-arr[i-1]){
// return false
// }
// }
// return true
};
优化:
/**
* @param {number[]} arr
* @return {boolean}
*/
var canMakeArithmeticProgression = function(arr) {
//优化
arr.sort((a,b)=>a-b)
for(let i = 1;i<arr.length-1;i++){
if(arr[i]*2 != arr[i-1] + arr[i+1]){
return false
}
}
return true
};
补充:
JavaScript中:如果直接使用sort()方法,该方法将按照ASCII码的从小到大顺序对数组元素进行排序。
如果需要对数字进行排序。
sort()方法如果指明了 compareFunction ,那么数组会按照调用该函数的返回值排序。即 a 和 b 是两个将要被比较的元素:
- 如果 compareFunction(a, b) 小于 0 ,那么 a 会被排列到 b 之前;
- 如果 compareFunction(a, b) 等于 0 , a 和 b 的相对位置不变。
备注: ECMAScript标准并不保证这一行为,而且也不是所有浏览器都会遵守(例如 Mozilla 在 2003 年之前的版本)
- 如果 compareFunction(a, b) 大于 0 , b 会被排列到 a 之前。
compareFunction(a, b) 必须总是对相同的输入返回相同的比较结果,否则排序的结果将是不确定的。
比较函数要求格式:
function compare(a, b) {
if (a < b ) {
// 按某种排序标准进行比较, a 小于 b
return -1;
}
if (a > b ) {
return 1;
}
// a与b相等
return 0;
}
数字数组的比较函数
从小到大:
function compareNumbers(a, b) {
return a - b;
}
从大到小:
function compareNumbers(a, b) {
return b - a;
}
当然,我们也可以直接在使用比较函数时定义该方法
var numbers = [4, 8, 2, 1, 3];
numbers.sort(function(a, b) {
return a - b;
});
console.log(numbers);
以上是关于LeetCode:1502. 判断能否形成等差数列(python3,javascript)的主要内容,如果未能解决你的问题,请参考以下文章
Leetcode 1502. Can Make Arithmetic Progression From Sequence