在leetcode中,为什么java优于scala

时间:2018-06-04 10:02:20

标签: java scala

在leetcode中,对于添加两个数字的问题,我在Java和Scala中都实现了相同的算法。但是Java版本比scala好得多。 java版本代码的运行时间为52毫秒,而scala的运行时间为552毫秒。为什么会有巨大的性能差异?

附上代码:

Scala版本:

object Solution {
def addTwoNumbers(l1: ListNode, l2: ListNode): ListNode = {
var a = l1
var b = l2
var sum = 0
var digit = 0
var tenDigit = 0
val l3 = new ListNode
var c = l3
while(a!=null || b!=null){

  sum = (if(a==null)0 else a._x) + (if(b==null)0 else b._x) + tenDigit
  digit = sum % 10
  tenDigit = sum / 10

  c.next = new ListNode(digit)
  c = c.next
  if(a!=null)a = a.next
  if(b!=null)b = b.next

}

if (tenDigit > 0) {
    c.next = new ListNode(tenDigit);
}

l3.next

}
}

Java版:

class Solution {
public ListNode addTwoNumbers(ListNode l1, ListNode l2) {
ListNode a = l1;
ListNode b = l2;
int sum = 0;
int digit = 0;
int tenDigit = 0;
ListNode l3 = new ListNode(0);
    ListNode zeroNode = new ListNode(0);
ListNode c = l3;
while(a!=null || b!=null){

sum = (a==null ? 0 : a.val) + (b==null ? 0 : b.val) + tenDigit;
digit = sum % 10;
tenDigit = sum / 10;

c.next = new ListNode(digit);
c = c.next;
if(a!=null)a = a.next;
if(b!=null)b = b.next;

}
if(tenDigit!=0){
   c.next = new ListNode(tenDigit);
}
return l3.next;
}
}

0 个答案:

没有答案