当前位置: 首页 > article >正文

每日leetcode

1502. 判断能否形成等差数列 - 力扣(LeetCode)

题目

给你一个数字数组 arr 。

如果一个数列中,任意相邻两项的差总等于同一个常数,那么这个数列就称为 等差数列 。

如果可以重新排列数组形成等差数列,请返回 true ;否则,返回 false 。

示例 1:

输入:arr = [3,5,1]
输出:true
解释:对数组重新排序得到 [1,3,5] 或者 [5,3,1] ,任意相邻两项的差分别为 2 或 -2 ,可以形成等差数列。

示例 2:

输入:arr = [1,2,4]
输出:false
解释:无法通过重新排序得到等差数列。

提示:

  • 2 <= arr.length <= 1000
  • -10^6 <= arr[i] <= 10^6

思路

  1. 这题考察的应该是排序函数的使用方法,如果没有很高的时间复杂度要求的话调包就行,如果要求比如说O(n)的时空间复杂度,那就可能需要桶排序了(遍历一遍数组通过最大值到最小值的差值设计桶,然后再遍历将对应的数字放到桶里,最后按桶返回)。
  2. 排完序后先将前两个数的差值作为公差,进行遍历,如果某相邻两数的差不等于公差直接返回false,否则遍历完成返回true。

代码实现

class Solution {
public:bool canMakeArithmeticProgression(vector<int>& arr) {sort(arr.begin(), arr.end());int diff = arr[1]-arr[0];for(int i = 2; i < arr.size(); ++i) {if(arr[i]-arr[i-1] != diff) return false;}return true;}
};

复杂度分析

  • 时间复杂度:排序的开销O(nlogn)。
  • 空间复杂度:排序的栈空间O(logn)。
http://www.lryc.cn/news/2384351.html

相关文章:

  • YouTube视频字幕转成文章算重复内容吗?
  • 网络学习-利用reactor实现http请求(六)
  • 云原生安全:IaaS安全全解析(从基础到实践)
  • 【IC_Design】跨时钟域的寄存器更新后锁存
  • Spring AI 之提示词
  • 亚远景-汽车软件开发的“升级之路”:ASPICE各等级说明
  • Java微服务架构:Spring Cloud全栈指南,附最新Demo源码,可独立运行!
  • 使用LLaMA-Factory微调ollama中的大模型(一)------家用电脑安装LLaMA-Factory工具
  • 支持向量机(SVM):分类与回归的数学之美
  • 手撕I2C和SPI协议实现
  • 人工智能+:职业价值的重构与技能升级
  • JVM部分内容
  • paddlehub搭建ocr服务
  • python-leetcode 68.有效的括号
  • 人性的裂痕:社会工程学如何成为网络安全的隐形战场
  • ObservableCollection序列化,和监听链表内元素变化
  • NLP学习路线图(四):Python编程语言
  • matlab实现无线通信组
  • 基于单片机的室内采光及可燃气体泄漏报警装置设计
  • Serverless爬虫架构揭秘:动态IP、冷启动与成本优化
  • 从单体到分布式:深入解析Data Mesh架构及其应用场景与价值
  • AI大模型ms-swift框架实战指南(十三):Agent智能体能力构建指南
  • LLM最后怎么输出值 解码语言模型:从权重到概率的奥秘
  • Leetcode百题斩-回溯
  • 超小多模态视觉语言模型MiniMind-V 训练
  • 边缘云的定义、实现与典型应用场景!与传统云计算的区别!
  • HarmonyOS 鸿蒙应用开发基础:父组件和子组件的通信方法总结
  • 小白的进阶之路系列之三----人工智能从初步到精通pytorch计算机视觉详解下
  • Scrapy爬取heima论坛所有页面内容并保存到MySQL数据库中
  • HarmonyOS NEXT~鸿蒙系统下的Cordova框架应用开发指南