What is the time complexity of object assignment using the equals sign in Kotlin (or Java)?
fun moveZeroes(nums: IntArray): Unit { var numsCopy = nums }
More specifically if I have my own object ListNode
* Example: * var li = ListNode(5) * var v = li.`val` * Definition for singly-linked list. * class ListNode(var `val`: Int) { * var next: ListNode? = null * } */
What would be the copy time below?
fun mergeTwoLists(l1: ListNode?, l2: ListNode?): ListNode? { var l1Copy = l1 }
I find myself often doing this assignment since ListNode passes as val, and I can’t do
l1 = l1?.next
Advertisement
Answer
The assignment
var l1Copy = l1
does not make a new ListNode
object that contains the same properties as l1
. It just creates a new variable called l1Copy
and points it to the same memory location as l1
, so it’s an O(1) operation.
In the following code
fun f(n: ListNode) { var n1 = n } val node = ListNode(1) val var1 = node f(node)
there’s only one object, ListNode(1)
, and three variables pointing to it: node
and var1
in the global scope, and n
and n1
in f
‘s scope.