简答题 给定一个长度为n的非负整数序列,请计算序列的最大跨度值(最大跨度值 = 最大值减去最小值)

首先,我们可以通过遍历整个序列,找到最大值和最小值。然后,我们可以通过计算最大值减去最小值,得到最大跨度值。

以下是一个示例的Python代码实现:

def max_span(seq):
    min_val = float('inf')
    max_val = float('-inf')
    
    for num in seq:
        if num < min_val:
            min_val = num
        if num > max_val:
            max_val = num
    
    return max_val - min_val

在这个代码中,我们使用两个变量min_valmax_val来记录序列的最小值和最大值。我们首先将它们初始化为正无穷和负无穷,以确保在遍历序列时,每个数都会更新这两个变量。

然后,我们遍历序列中的每个数,如果该数小于min_val,则更新min_val为该数;如果该数大于max_val,则更新max_val为该数。

最后,我们返回max_val - min_val作为最大跨度值。

这个算法的时间复杂度是O(n),其中n是序列的长度。

你可以创建一个名为`DoubleMatrix`的类,其中包含一个二维双精度数组,并提供相应的成员函数来计算最大值最小值和均。以下是简单的实现: ```cpp #include <iostream> #include <vector> class DoubleMatrix { private: std::vector<std::vector<double>> matrix; // 二维数组存储 int m, n; public: DoubleMatrix(int rows, int cols) : m(rows), n(cols) {} // 构造函数 void setValues(const std::vector<std::vector<double>>& values) { // 设置矩阵 matrix = values; } double getMax() const { // 获取最大值 double max = matrix[0][0]; for (int i = 0; i < m; i++) { for (int j = 0; j < n; j++) { if (matrix[i][j] > max) max = matrix[i][j]; } } return max; } double getMin() const { // 获取最小值 double min = matrix[0][0]; for (int i = 0; i < m; i++) { for (int j = 0; j < n; j++) { if (matrix[i][j] < min) min = matrix[i][j]; } } return min; } double getMean() const { // 计算 double sum = 0.0; for (int i = 0; i < m; i++) { for (int j = 0; j < n; j++) { sum += matrix[i][j]; } } return sum / (m * n); } void printMatrix() const { // 打印矩阵 for (const auto& row : matrix) { for (double val : row) { std::cout << val << " "; } std::cout << "\n"; } } void calculateAndPrintStats() const { // 同时计算并打印统计 double max_val = getMax(); double min_val = getMin(); double mean_val = getMean(); std::cout << "最大值: " << max_val << "\n"; std::cout << "最小值: " << min_val << "\n"; std::cout << "均: " << mean_val << "\n"; printMatrix(); } }; int main() { int m = 4, n = 5; DoubleMatrix mat(m, n); // 例如设置矩阵的 std::vector<std::vector<double>> values = {{1, 2, 3, 4, 5}, {6, 7, 8, 9, 10}, {11, 12, 13, 14, 15}, {16, 17, 18, 19, 20}}; mat.setValues(values); mat.calculateAndPrintStats(); // 调用计算并打印 return 0; } ``` 在这个例子中,`calculateAndPrintStats`函数会同时计算并打印出二维数组的统计信息以及整个矩阵内容。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值