簡體   English   中英

由於hackerrank程序中的Java代碼超時錯誤而終止

[英]Terminated due to timeout error in java code in hackerrank program

問題(Hackerrank)給定以10為底的整數n,請將其轉換為二進制(以2為底)。 然后找到並打印以10為底的整數,該整數表示n的二進制表示形式中連續1的最大數目。

我的代碼如下: 其中顯示“ RuntimeError”-,並且編譯器消息為“由於超時終止”。

import java.util.*;

public class Solution {
    public static void main(String[] args) {
        Scanner scn = new Scanner(System.in);
        int n=scn.nextInt();
        int rem = 0,s = 0,t = 0;
        while (n > 0)
            rem = n % 2;
            n = n / 2;
        if (rem == 1) 
        {
            s++;
            if (s >= t) 
                t = s;
            else
                s = 0;
        }
        System.out.println(t);
scn.close();
    }
}

您能幫我解決此錯誤嗎?

while (n > 0)
    rem = n % 2;
    n = n / 2;

在這里, n = n / 2在循環之外,因此n永遠不會改變,這將是一個無限循環。 這就是為什么您超時。

更改為:

while (n > 0) {
    rem = n % 2;
    n = n / 2;
}

提示:請始終使用大括號。 他們將確保多條指令是if / while / whatever塊的一部分,並提高單指令塊的可讀性。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM