zoukankan      html  css  js  c++  java
  • 判断能否形成等差数列

    1502. 判断能否形成等差数列

    给你一个数字数组 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

     

     

    代码:

    #include<iostream>
    #include<bits/stdc++.h>
    #include<vector>
    using namespace std;
    
    bool canMakeArithmeticProgression(vector<int>& arr) {
        sort(arr.begin(),arr.end());
        int dif=arr[1]-arr[0];
        int len=arr.size();
        for (size_t i = 1; i < len-1; i++)
        {
            if(arr[i+1]-arr[i]!=dif)
                return false;
        }
        return true;
    }
    int main(){
        int n,num;
        cin>>n;
        vector<int> vec;
        for (size_t i = 0; i < n; i++)
        {
            cin>>num;
            vec.push_back(num);
            // cout<<vec[i]<<" ";
        }
        cout<<canMakeArithmeticProgression(vec)<<endl;
    }
    
    
    //官方代码
    /*
    class Solution {
    public:
        bool canMakeArithmeticProgression(vector<int>& arr) {
            sort(arr.begin(), arr.end());
            for (int i = 1; i < arr.size() - 1; ++i) {
                if (arr[i] * 2 != arr[i - 1] + arr[i + 1]) {
                    return false;
                }
            }
            return true;
        }
    };
    
    */

     

    测试样例:

    3
    3 5 1
    1

     

    因上求缘,果上努力~~~~ 作者:每天卷学习,转载请注明原文链接:https://www.cnblogs.com/BlairGrowing/p/13449557.html

  • 相关阅读:
    react-redux
    Vue中常用的UI框架
    vue中router与route的区别
    H5新增input属性
    H5新增的input类型
    菜鸡对作用域链的理解
    自己对路由的一些理解
    浏览器缓存
    黄瓜的不定期更新面试题
    ajax封装
  • 原文地址:https://www.cnblogs.com/BlairGrowing/p/13449557.html
Copyright © 2011-2022 走看看