首页 > 试题广场 >

牛牛的魔法值

[编程题]牛牛的魔法值
  • 热度指数:786 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解
牛牛最近在和牛毕学习魔法,牛毕说每一个魔法都对应一个n维空间,用()表示。

成为一个伟大的牛魔法师的第一件事情是计算每个魔法的魔法值,然后挑选适合自己的魔法进行学习。
牛毕对牛牛说计算魔法值很简单就是对于每一个子连续维度空间计算出它的子维度魔法值,然后所有子维度魔法值中的最大值就能表示该魔法的最大威力,故其为该魔法的魔法值。

  • 一个子连续维度空间是指下标连续,例如一个n维空间(),()就是它的一个子连续空间而()不是。
  • 一个子连续维度空间的子维度魔法值是,这个空间的最高维度异或次高维度的值。例如(1,8,4)的维度魔法值就是8异或4等于12
  • 牛牛计算的魔法其对应的n维空间的坐标是不重复的,即对于任意一对.

输出魔法值

示例1

输入

10,[3,7,0,9,6,5,8,4,1,2]

输出

15
示例2

输入

5,[0,7,2,5,9]

输出

14

备注:
给定a数组,数组下标从0开始。
 
这种题有意思吗,为了出题拐弯抹角的不说人话,光理解题意都得二十分钟,最后还不知道自己理解的对不对
发表于 2022-06-23 11:09:19 回复(0)
(a1,a2,a3,a4,a5) a5是最高维度,a4是次高维度。。题意真是牛币
发表于 2021-11-26 09:48:27 回复(0)
能不能说人话,本来理解题意已经够费劲了
发表于 2022-07-02 16:27:23 回复(0)
class Solution {
public:
    /**
     * 返回一个数字表示魔法值。
     * @param n int整型 表示是几维空间
     * @param a int整型vector 表示n维空间的坐标
     * @return int整型
     */
    int solve(int n, vector<int>& a) {
        int s = 0;
        stack<int> S1, S2;
        for(int i=0;i<n;i++){
            while(!S1.empty() && S1.top()<=a[i])
                S1.pop();
            if(!S1.empty())
                s = max(s, S1.top()^a[i]);
            S1.push(a[i]);
        }
        for(int i=n-1;i>=0;i--){
            while(!S2.empty() && S2.top()<=a[i])
                S2.pop();
            if(!S2.empty())
                s = max(s, S2.top()^a[i]);
            S2.push(a[i]);
        }
        return s;
    }
};

发表于 2020-07-20 05:21:48 回复(0)