What is the time complexity of object assignment using the equals sign in Kotlin (or Java)?
JavaScript
x
fun moveZeroes(nums: IntArray): Unit {
var numsCopy = nums
}
More specifically if I have my own object ListNode
JavaScript
* 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?
JavaScript
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
JavaScript
l1 = l1?.next
Advertisement
Answer
The assignment
JavaScript
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
JavaScript
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.