Javascript 这两种代码之间有什么区别
我刚刚解决了一个黑客等级问题。问题是: 以下解决方案已通过所有30项测试Javascript 这两种代码之间有什么区别,javascript,algorithm,Javascript,Algorithm,我刚刚解决了一个黑客等级问题。问题是: 以下解决方案已通过所有30项测试 function kangaroo(x1, v1, x2, v2) { var returnVal = "NO"; if (x2 > x1 && v2 > v1) { returnVal = "NO"; } else if ((x1 - x2) % (v2 - v1) === 0) { returnVal = "YES"; }
function kangaroo(x1, v1, x2, v2) {
var returnVal = "NO";
if (x2 > x1 && v2 > v1) {
returnVal = "NO";
} else if ((x1 - x2) % (v2 - v1) === 0) {
returnVal = "YES";
}
return returnVal;
}
但是在我像下面这样修改代码之后,它还没有通过2个测试
function kangaroo(x1, v1, x2, v2) {
var returnVal = "NO";
if ((x1 - x2) % (v2 - v1) === 0) {
returnVal = "YES";
}
return returnVal;
}
returnVal的默认值为“否”。所以,我认为第一个if语句应该是不必要的。那么,为什么第二个代码没有通过两个测试呢?第一个代码块中的第二个条件是elseif。仅当第一个if条件未通过时,它才会运行 您可以拥有与if条件和else if条件都匹配的输入。这将导致在第一种情况下输出为否(如果<代码>匹配,则输出为否;如果<代码>未运行,则输出为<代码>否则输出为否),但在修改的代码中输出为是(如果<代码>匹配,则输出为前一种<代码>否则输出)。
kangoroo(1,1,2,2)
因此,第一个代码将返回No,而第二个代码将返回Yes。您可以将第一个条件实施到第二个条件中:
function kangaroo(x1, v1, x2, v2){
if ((x1 - x2) % (v2 - v1) === 0 && !(x2 > x1 && v2 > v1)) {
return "YES";
}
return " No";
}
试试这个(用Java编写)
x1:袋鼠1的初始位置
&x2:袋鼠2的初始位置
如果给定x2>x1
static String kangaroo(int x1, int v1, int x2, int v2) {
int i;
for(i=0; x1<x2; i++){
x1 = x1 + v1;
x2 = x2 + v2;
if(x1 == x2){
return "YES";
}
}
return "NO";
}
静态字符串袋鼠(intx1、intv1、intx2、intv2){
int i;
对于(i=0;x1x2或x1==x2或x1
static String kangaroo(int x1, int v1, int x2, int v2) {
int i, flag = 0;
if(x1 > x2){
for(i=0; x1>x2; i++){
x1 = x1 + v1;
x2 = x2 + v2;
if(x1 == x2){
return "YES";
}
}
}else if(x1 < x2){
for(i=0; x1<x2; i++){
x1 = x1 + v1;
x2 = x2 + v2;
if(x1 == x2){
return "YES";
}
}
}else
return "YES";
return "NO";
}
静态字符串袋鼠(intx1、intv1、intx2、intv2){
int i,flag=0;
如果(x1>x2){
对于(i=0;x1>x2;i++){
x1=x1+v1;
x2=x2+v2;
如果(x1==x2){
返回“是”;
}
}
}else if(x1 对于(i=0;x1而言,最简单的解决方案是
if (v1 <= v2 && x2 > x1) {
return "NO";
} else {
return (x2 - x1) % (v2 - v1) == 0 ? "YES" : "NO";
}
if(v1-x1){
返回“否”;
}否则{
返回(x2-x1)%(v2-v1)==0?“是”:“否”;
}
否则如果……提示:(x1-x2)%(v2-v1)==0
可能是真的,即使x2