首页 > 试题广场 >

给定一串整数数列,找出其中任意两个连续(或不连续)的第 i

[单选题]
给定一串整数数列,找出其中任意两个连续(或不连续)的第 i 个和第 j 个整数(i>j),使得第 i 个数-第 j 个数的值最大,则其代码为:
void solve()
{
    int t=a[1];
    for(int i = 0; i < n; i ++){
        for(int j = i+1; j < n; j++)
            ____;
        ans = a[i]-t;
    }
}


  • t=min(a[i],a[j])
  • t=min(t,a[j])
  • t=a[i]
  • t=a[j]
正确答案:B( t=min(t,a[j]) ) 极简解释: 目标:找  a[i] - a[j]  的最大值( i > j ) 关键:对每个  a[i] ,用  t  记录前面所有数的最小值 选项B: t=min(t,a[j])  能正确维护最小值,保证  a[i] - t  是当前最大差值 其他选项: A:只比较  a[i]  和  a[j] ,无法维护全局最小 C/D:直接赋值,破坏最小值维护 一句话总结: 选B,只有它能动态维护最小值,保证正确计算最大差值。
发表于 2025-03-27 16:42:30 回复(0)