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

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

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

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

Posted feedbacks - C#


	
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
using System;
using System.Collections.Generic;
class Program {
    static T[] OnlyUnique<T>(T[] list) {
        List<T> uniq = new List<T>();
        List<T> dup = new List<T>();
        foreach (T o in list) {
            if (uniq.Contains(o)) { uniq.Remove(o); dup.Add(o); }
            else if (!dup.Contains(o)) uniq.Add(o);
	    }
        return uniq.ToArray();
    }
    static void Main(string[] args) {
        int[] a = { 3, 1, 4, 1, 5, 9, 2, 6, 5 };
        foreach (int n in OnlyUnique(a)) Console.WriteLine(n);
    }
}

Linqのサンプル的な位置づけで。 Distinctは遅延実行してくれるそうですが、今回の例だと遅延実行の意味が無いなぁ…。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
using System;
using System.Linq;

class Program
{
    public static void Main( string[] args )
    {
        int[] array = { 3, 1, 4, 1, 5, 9, 2, 6, 5 };
        foreach( int unique in (from num in array select num).Distinct() )
            Console.WriteLine( unique );
    }
}

Index

Feed

Other

Link

Pathtraq

loading...