2-11 整数数组 A1<A2<A3......An中是否存在 Ai = i?

    xiaoxiao2025-04-30  7

    分析题目,仅仅判断整数数组中是否存在Ai = i,可以转而判断整数数组形成的直线,和( Ai = i是一条过原点的,斜率为1的直线)是否有交点即可。

    是否存在交点有以下情况

    1、整数数组的斜率等于1:或者重复或者无交点

    2、整数数组的斜率大于1:只有当整数数组的最小点,位于Ai = i这条直线的下方,整数数组的最大点,位于Ai = i这条直线的上方,才可能有交点

    3、整数数组的斜率小于1:只有当整数数组的最小点,位于Ai = i这条直线的上方,整数数组的最大点,位于Ai = i这条直线的下方,才可能有交点

    所以:

    if (A1 < 1)

    {

      if (An > n) return True;

      else return False;

    }

    else if(A1 == 1)return True;

    else

    {

     if(An < n)return Ture;

    else return False;

    }

    }

    引申出问题:求出交点i。

    先求是否有交点;当有交点的情况下,使用二分法查找该交点。

    转载请注明原文地址: https://ju.6miu.com/read-1298600.html
    最新回复(0)