challenge 重複する要素を取り除く

与えられたリストxsの中から、 2回以上出現するものを全部取り除いてください。

サンプル入力
[3, 1, 4, 1, 5, 9, 2, 6, 5]
サンプル出力
[3, 4, 9, 2, 6]

これはアレイのuniqの派生問題です。 リストとかアレイという言葉は言語によってまちまちの意味で使われているので、 「配列のようなもの」という漠然とした意味にとって構いません。

Posted feedbacks - Other


	
1
2
3
4
5
集合+ソートを用いたものでは、Pythonでの僕の投稿 #2818 も、
最悪のケースでの計算量は指数オーダーでした。

ユニークな要素の数が多すぎると sortとcountで効率が落ちる。
効率考えたつもりが返って悪化した悪い例になってしまった(恥

Factor です。

1
2
3
4
5
6
7
8
USING: kernel sequences combinators.lib math ;

: uniq-only ( seq -- newseq )
    dup [ [ = ] curry ] swap [ slip swap count 1 = ] 2curry subset ;

! example
USE: prettyprint
{ 3 1 4 1 5 9 2 6 5 } uniq-only .

Index

Feed

Other

Link

Pathtraq

loading...