Broken Clock是正确的,每天两次

时间:2016-10-31 20:21:29

标签: java

我最近接受了一个黑客挑战问题,我得到了5/9输出正确,错误的4个是隐藏的,但我最好的猜测是,如果我的函数值是实际的浮点变量就会发生。

以下是问题:

  

有一句古老的说法是每天两次破坏时钟。如果   时钟停在1:20然后它将在凌晨1:20和   下午1:20,写一个接受的函数:

     
      
  • 破碎时钟秒针的速率r。正常时钟每秒移动一次,破碎的时钟将移动r秒(neg为   向后)
  •   
  • 已过去的小时数
  •   
     

实施例

rate = 0  
elapsed hours = 24  
result = 2
     

您可以使用的功能:

static int CountCorrectDisplay(float rate, float elapsedhours)

我得到的是:

class Solution {
    static int CountCorrectDisplay(float rate, float elapsedhours) {
        int result = 0;
        float[] rateNormal = new float[(int) elapsedhours];
        float[] rateBroken = new float[(int) elapsedhours];

        for (int i = 0; i < rateNormal.length; i++) {
            rateNormal[i] = i % 12;

            if (rate >= 0) {
                rateBroken[i] = (rate * rateNormal[i]) % 12;
            } else if (rate < 0) {
                rateBroken[i] = (Math.abs(rate + 24) * rateNormal[i]) % 12;
            }

            if (rateNormal[i] == rateBroken[i]) {
                result++;
            }

            System.out.println("Mult: " + rateNormal[i]);
            System.out.println("Rate: " + rateBroken[i]);
            System.out.println();
        }

        return result;
    }

    public static void main(String[] args) {
        System.out.println(CountCorrectDisplay(12, 24));
    }
}

如果放置浮动值(如1.15,12.5),则会出现错误 如果经过的时间是一个浮点值,我很可能没有考虑到这一点。如果我在coderpad上尝试它,我会收到警告,告诉我转换可能不一样。

  1. 我认为4个错误的案例是考虑到浮动值时是否正确
  2. 如何解决此问题以将浮动值计入函数
  3. 如果浮动值场景不是问题,我在代码中做错了什么
  4. 修改
    其中一个错误是Out of Bounds。我猜这是因为如果经过的小时是12.5,我需要为我的数组增加1个元素大小。我需要一些逻辑来检查elapsedhours是否有十进制值大于0,而不是我可以添加一个到我的数组的大小。

    我还看到我需要将我的十进制值转换为时间。十进制值很可能是60的百分比。所以12.5,取0.5,然后花60分钟的50%给你30分钟。我在考虑速率的相似逻辑(以秒为单位)

0 个答案:

没有答案