package Ġcom . leetcode Ċ Ċ import Ġkotlin . math . min Ċ Ċ // Ġhttps :// leetcode . com / problems / min - stack / Ċ class ĠP 1 5 5 Ġ{ ĊĠĠĠ Ġvar Ġdata : ĠListNode ? Ġ= Ġnull ĊĊĠĠĠ Ġ// ĠPush Ġelement Ġx Ġonto Ġstack . ĊĠĠĠ Ġfun Ġpush ( x : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġdata Ġ= ĠListNode ( x ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmin Ġ= Ġif Ġ( data Ġ== Ġnull ) Ġx Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnext Ġ= Ġdata ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmin ( x , Ġdata !!. min ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// ĠRemoves Ġthe Ġelement Ġon Ġtop Ġof Ġthe Ġstack . ĊĠĠĠ Ġfun Ġpop () Ġ{ ĊĠĠĠĠĠĠĠ Ġdata Ġ= Ġdata ?. next ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// ĠGet Ġthe Ġtop Ġelement . ĊĠĠĠ Ġfun Ġtop (): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġdata !! .` val ` ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// ĠRetrieve Ġthe Ġminimum Ġelement Ġin Ġthe Ġstack . ĊĠĠĠ Ġfun Ġget Min (): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġdata !!. min ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġclass ĠListNode ( var Ġ` val `: ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġmin Ġ= ĠInt . MIN _ VALUE ĊĠĠĠĠĠĠĠ Ġvar Ġnext : ĠListNode ? Ġ= Ġnull ĊĠĠĠ Ġ} Ċ Ċ } Ċ