FIRE Wannabeの備忘録

毎月積立。

【LeetCode】No.26: Remove Duplicates from Sorted Array

さて26個目。ソート済み配列からダブってる数字を削除して要素がいくつあるか(配列の長さ)返すものです。

 

今回のアルゴリズムの主な情報は以下の3点:

・ソート済みの配列が所与。

・配列内で重複する数字を削除し、いち要素ひとつにし、配列の長さを返すもの。

・上記はin-place、すなわち新しいスペースをとらないようその場で置き換えていくような処理。

 

例えば、nums=[1,1,2]という配列が与えられたならば重複除去によって[1,2]となりlen(nums)=2を返すようなものが求められています。

 

そして私の足りない頭で考え出したコードが以下の通り・・!

f:id:ed_hen:20200602013029p:plain

no26

ご覧の通りsubmissionの方で弾かれてます。難易度easyなんですがま〜だ書ききれなくて悔しいですね。まあいずれリファインされていくはず。というかexpectedの欄では問題文でいってた要素数ではなくてリストそのまま返されてますねw

 

ということで回答見たところ、javaのみ。うーん。java2pythonみたいなコンバータがいずれ必要になりそう。javaのやつも見ていてなんとなくはわかるんですが、ほんとなんとなくなので。。nums[:] = sorted(list(set(nums)))のように1~2行で片してるひとまでいていろんな人のコード見るのは楽しいんですが、他方でやはり出題者による回答例(two pointer).pyも欲しいところ。

 

Problems達成度:1.77% (26/1463)

理解度(主観):0.001%