export default (arr) => {
// 如果数组长度小于2返回0
if (arr.length < 2) {
return 0
}
// 排序
arr.sort()
// 用它来保存相邻元素的最大差值
let max = 0
for (let i = 0, len = arr.length - 1, tem; i < len; i++) {
tem = arr[i + 1] - arr[i]
if (tem > max) {
max = tem
}
}
return max
}

测试用例

import sort from '../../code/sort/lesson3'

test('input1', () => {
expect(sort([3, 6, 9, 1])).toBe(3)
}) test('input2', () => {
expect(sort([10])).toBe(0)
})

更优解

export default (arr) => {
if (arr.length < 2) {
return 0
}
let max = 0
let len = arr.length - 1
let space
for (let i = len, tmp; i > 0; i--) {
for (let j = 0; j < i; j++) {
tmp = arr[j]
if (tmp > arr[j + 1]) {
arr[j] = arr[j + 1]
arr[j + 1] = tmp
}
}
if (i < len) {
space = arr[i + 1] - arr[i]
if (space > max) {
max = space
}
}
}
return Math.max(max, arr[1] - arr[0])
}

测试用例

import sort from '../../code/sort/lesson3'

test('input1', () => {
expect(sort([3, 6, 9, 1])).toBe(3)
}) test('input2', () => {
expect(sort([10])).toBe(0)
}) test('input3', () => {
expect(sort([13, 16, 19, 1])).toBe(12)
})

最新文章

  1. iOS 开发总结(下)
  2. 再探.NET的PE文件结构(安全篇)
  3. angular $http 与form表单的select
  4. python之面向对象编程
  5. Hibernate正向工程(实体类--&gt;数据库)
  6. C语言中全局变量、局部变量、静态全局变量、静态局部变量的区别 (转)
  7. PHP 设计模式 笔记与总结(5)PHP 魔术方法的使用
  8. 【web】 亿级Web系统搭建——单机到分布式集群
  9. JavaScript网站设计实践(一)网站结构以及页面效果设计
  10. js获取几个月前,几周前时间。
  11. C陷阱与缺陷(四)
  12. Fiddler扩展之脚本录制
  13. 怎么获取smtp服务器用户帐号和密码
  14. 【Qt编程】基于Qt的词典开发系列&lt;五&gt;--无边框窗口的拖动
  15. iview 无法缓存的问题
  16. 初见TensorFlow :知其所以然
  17. 线程安全单例最佳实践,C#中的Lazy是如何保证线程安全的
  18. rails中 flash 和 flash.now的区别
  19. WPF 自定义命令 以及 命令的启用与禁用
  20. 使用dos2unix批量转换文件

热门文章

  1. Python3安装mysql模块
  2. Win32窗口消息机制 x Android消息机制 x 异步执行
  3. 结合源码,重温 Android View 的事件处理知多少 ?
  4. 【Elasticsearch 7 探索之路】(四)Analyzer 分析
  5. NN入门,手把手教你用Numpy手撕NN(三)
  6. 2019-10-2,html作业,简历源码
  7. 从Netty EventLoop实现上可以学到什么
  8. VS Code 中文社区正式成立啦!VS Code Day 圆满落幕!
  9. SpringBoot时间参数处理完整解决方案
  10. 3sql