zoukankan      html  css  js  c++  java
  • lintcode254- Drop Eggs- easy

    There is a building of n floors. If an egg drops from the k th floor or above, it will break. If it's dropped from any floor below, it will not break.

    You're given two eggs, Find k while minimize the number of drops for the worst case. Return the number of drops in the worst case.

    Clarification

    For n = 10, a naive way to find k is drop egg from 1st floor, 2nd floor ... kth floor. But in this worst case (k = 10), you have to drop 10 times.

    Notice that you have two eggs, so you can drop at 4th, 7th & 9th floor, in the worst case (for example, k = 9) you have to drop 4 times.

    Example

    Given n = 10, return 4.
    Given n = 100, return 14.

    用公式 1 + 2 + 3 + ... + n > 楼层,找到这个n即可。(小心sum用long来做,避免算的时候溢出。)

    原理见这一页:http://datagenetics.com/blog/july22012/index.html

    思想是让第一个鸡蛋落每一层,最后的worstcase都尽量接近即可优化。接近方法就是第一个鸡蛋每多存活一次,就多消耗一次次数,接下来就跳少一格留机会给第二个鸡蛋。

    public class Solution {
        /*
         * @param n: An integer
         * @return: The sum of a and b
         */
        public int dropEggs(int n) {
            // write your code here
            long sum = 0;
            int i = 0;
    
            while (sum < n){
                i++;
                sum += i;
            }
            return i;
        }
    }
  • 相关阅读:
    linux 下查看目录所占用空间大小 du命令功能
    nginx 的启动 停止和重启
    excel vba
    过程中遇到的问题
    Java python BDA文件上传下载项目遇到的问题
    java login小方法集合
    python 初学
    python 从0学起
    python交互的几种方式
    模块与包概念与调用
  • 原文地址:https://www.cnblogs.com/jasminemzy/p/7590228.html
Copyright © 2011-2022 走看看