重複する要素を取り除く
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 );
}
}
|



にしお
#3412()
Rating1/1=1.00
これはアレイのuniqの派生問題です。 リストとかアレイという言葉は言語によってまちまちの意味で使われているので、 「配列のようなもの」という漠然とした意味にとって構いません。
[ reply ]