有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java楼梯的最大高度

给定一个代表方块的整数A。每个方块的高度为1。任务是使用这些块创建一个最大高度的楼梯。第一个楼梯只需要一个街区,第二个楼梯需要两个街区,依此类推。找到并返回楼梯的最大高度


Your submission failed for the following input: A : 92761

Your function returned the following : 65536
The expected returned value : 430

Approach:
We are interested in the number of steps and we know that each step Si uses exactly Bi number of bricks. We can represent this problem as an equation:
n * (n + 1) / 2 = T (For Natural number series starting from 1, 2, 3, 4, 5 …)
n * (n + 1) = 2 * T
n-1 will represent our final solution because our series in problem starts from 2, 3, 4, 5…

Now, we just have to solve this equation and for that we can exploit binary search to find the solution to this equation. Lower and Higher bounds of binary search are 1 and T.

CODE

public int solve(int A) {
        int l=1,h=A,T=2*A;
        while(l<=h)
        {
            int mid=l+(h-l)/2;
            if((mid*(mid+1))==T)  
                return mid;
            if((mid*(mid+1))>T && (mid!=0 && (mid*(mid-1))<=T) )
                return mid-1;
            if((mid*(mid+1))>T)
                h=mid-1;
            else
                l=mid+1;
        }
        return 0;
    }

共 (0) 个答案