4 条题解

  • 1
    @ 2023-12-2 21:01:53
    #include <iostream>
    using namespace std;
    int main()
    {
        int n , a , x = -1, length = 0, max = 1;
        cin >> n;
        for(int i = 1;i <= n;i++)
        {
            cin >> a;
            if(a == x)
            {
                length++;
            }
            else
            {   
                if(length > max)
                {
                    max = length;
                }
                length = 1;
                x = a;
            }
        }
        cout << max;
        return 0;
    }
    
    • 1
      @ 2023-7-28 19:43:04

      算法思路:

      1. 定义两个变量maxLengthcurrentLength,分别用于记录最长平台的长度和当前正在计算的平台的长度。
      2. 从数组的第二个元素开始遍历,比较当前元素与前一个元素是否相同。
      3. 如果相同,则将当前长度加1。
      4. 如果不相同,则将当前长度与最大长度比较,并重置当前长度为1。
      5. 在每次更新最大长度时,取最大值作为新的最大长度。
      6. 最后返回最大长度作为结果。

      代码解析:

      1. std::vector<int>& arr:函数findLongestPlateau接收一个引用类型的整数向量作为参数,表示要查找最长平台的数组。
      2. maxLengthcurrentLength:定义两个变量来保存最长平台的长度和当前正在计算的平台的长度。
      3. for循环从数组的第二个元素开始遍历,通过比较当前元素与前一个元素是否相同来判断是否属于同一平台。
      4. 如果相同,说明平台延续,将当前长度加1。
      5. 如果不相同,说明当前平台结束,将当前长度与最大长度比较,并以较大值更新最大长度。然后重置当前长度为1,为下一个平台做准备。
      6. 循环结束后,返回最大长度作为结果。
      7. main函数中,首先读取输入的整数n表示数组元素的个数,然后用一个循环读取n个整数作为数组的值。
      8. 调用findLongestPlateau函数计算最长平台的长度,并将结果打印输出。
      #include <iostream>
      #include <vector>
      
      int findLongestPlateau(std::vector<int>& arr) {
          int maxLength = 0;
          int currentLength = 1;
          
          for (int i = 1; i < arr.size(); i++) {
              if (arr[i] == arr[i-1]) {
                  currentLength++;
              } else {
                  maxLength = std::max(maxLength, currentLength);
                  currentLength = 1;
              }
          }
          
          return std::max(maxLength, currentLength);
      }
      
      int main() {
          int n;
          std::cin >> n;
          
          std::vector<int> arr(n);
          for (int i = 0; i < n; i++) {
              std::cin >> arr[i];
          }
          
          int longestPlateau = findLongestPlateau(arr);
          std::cout << longestPlateau << std::endl;
          
          return 0;
      }
      
      • @ 2023-7-28 21:33:15

        大哥,有这么难吗

      • @ 2024-2-20 19:53:36

        @ 这代码一眼AI,谁没事把变量名设的那么长,代码还这么又长又复杂,这题明明很简单的

    • 0
      @ 2023-10-1 12:06:10

      思路就是统计这个数之前的数和它一样的状态能持续多久。

      • 0
        @ 2023-7-28 21:32:43

        yasuo👀️

        #include <iostream>
        int main(){
            int q,max=1,sum=1,a[1005]={};std::cin>>q;
            for(int i=1;i<=q;i++){
                std::cin>>a[i];
                if(a[i]==a[i-1]) sum++;
                else if(sum>max){max=sum;sum=1;}}
            std::cout<<max;return 0;}
        
        • 1

        信息

        ID
        200
        时间
        1000ms
        内存
        128MiB
        难度
        4
        标签
        递交数
        153
        已通过
        71
        上传者