From c944caec2e316a04c50b190fd07c4b498122d611 Mon Sep 17 00:00:00 2001 From: mhrooz Date: Mon, 17 Jun 2024 23:29:51 +0200 Subject: [PATCH] 138 copy a list --- 138-240617-pass/.main.py.swp | Bin 0 -> 12288 bytes 138-240617-pass/main.py | 48 +++++++++++++++++++++++++++++++++++ 2 files changed, 48 insertions(+) create mode 100644 138-240617-pass/.main.py.swp create mode 100644 138-240617-pass/main.py diff --git a/138-240617-pass/.main.py.swp b/138-240617-pass/.main.py.swp new file mode 100644 index 0000000000000000000000000000000000000000..64a87db65c1a023d1ec7b2e7b96543e932787334 GIT binary patch literal 12288 zcmeI2zi-n(6vwYwDt-hIj0kiMLsPZQkG4RuWDrspBq#_3LW&~G#FxgBeYO&Zwjh28 zCKeD$!z-o1PGx%UPuxl_4y z=?XtrsxXWrjIF-&o10tXxrL96wM=;rT5(Nf96n6ncZ4M_+U?;!%JMJ?SYGlPU02AU z>~Nz_b|qvX8M>`;k1p|Bv7Qw+=J*26_oSg<8-uG!GS^9Q5lD zV;j(W=s9FU6=)p#k!S21v;lpB+R$z20#txbLMNa+^z|TPZ=n~^6Uc)M=o)kyIu7Na zp9dJ*gg!&Bp~sK~EkSwcJI?R{QfGOl&O?I;5CI}U1c(3;AOb|-|0Teq(H23sEx9zd zO*pkmoyD{2QyNaqu9w=Tv^#y&DFF1c9W-!T-W)sCxylvo(yc+6`A00w)uq4 z9U+U(6rbf)E#6RywIJHgo~|Z)G`%*~*pefo6;bT1oYFF3k#h;Zmle_~2ChGqv0(yX zm+@oRVwmS$(@7jg1xH{kt|i$35O2tUPwTvz*{0EL!xMi?>L3}DTf=l+S!LGHPa5_l zr`4A22o*_z3R(7}sr$J9p#P{6(Rn3#4s&P;yngU#3`jq!1r@pPhI>)VlG_U{mT2M{ z{q^f%EnK!cL9rv8=1l0T@yV-xV0+SZYKm@s68Cw2+oZ-Cj@jw(8=liu-WuLi3Wfg0 zDqd1+y`sw+<2c=7xV}zBD=15omz!n+Qf2js5;n>-7+;szvDt49T wh)zZ>f88>wkMyu$S)6F9C*lg{|F*<`1FDX()c^nh literal 0 HcmV?d00001 diff --git a/138-240617-pass/main.py b/138-240617-pass/main.py new file mode 100644 index 0000000..f44d32c --- /dev/null +++ b/138-240617-pass/main.py @@ -0,0 +1,48 @@ +class Solution: + def copy RandomList(self, head: 'Optional[Node]') -> 'Optional[Node]': + l = [] + cur = head + while cur != None: + l.append(cur) + cur = cur.next + n_l = [] + for i in range(len(l)): + tmp = Node() + tmp.val = l[i].val + n_l.append(tmp) + for i in range(len(l)): + if l[i].random == None: continue + n_l[i].random = n_l[l[i].random.val] + if i == len(l) - 1: continue + n_l[i].next = n_l[i+1] + return n_l[0] +""" +class Node: + def __init__(self, x: int, next: 'Node' = None, random: 'Node' = None): + self.val = int(x) + self.next = next + self.random = random +""" + +class Solution: + def copyRandomList(self, head: 'Optional[Node]') -> 'Optional[Node]': + if head == None: + return None + l = [] + cur = head + cnt = 0 + m = {} + while cur != None: + l.append(cur) + m[cur] = cnt + cur = cur.next + cnt += 1 + n_l = [] + for i in range(len(l)): + tmp = Node(l[i].val) + n_l.append(tmp) + for i in range(len(l)): + if i != len(l) - 1: n_l[i].next = n_l[i+1] + if l[i].random == None: continue + n_l[i].random = n_l[m[l[i].random]] + return n_l[0]