[英]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.