繰り返し値を持つ配列があります。特定の値の出現回数を見つけたいと思います。
たとえば、 so: として定義された配列がvar dataset = [2,2,4,2,6,4,7,8];
ある場合、配列内の特定の値の出現回数を見つけたいとします。つまり、プログラムは、 value が 3 回出現した場合、 value2
が 1 回出現した場合などを示す必要があります6
。
これを行うための最も慣用的/エレガントな方法は何ですか?
繰り返し値を持つ配列があります。特定の値の出現回数を見つけたいと思います。
たとえば、 so: として定義された配列がvar dataset = [2,2,4,2,6,4,7,8];
ある場合、配列内の特定の値の出現回数を見つけたいとします。つまり、プログラムは、 value が 3 回出現した場合、 value2
が 1 回出現した場合などを示す必要があります6
。
これを行うための最も慣用的/エレガントな方法は何ですか?
array.filter(c => c === searchvalue).length;
この方法で実行しようとすると、次のようなエラーが発生する可能性があります。
array.reduce((acc, arr) => acc + (arr.label === 'foo'), 0); // Operator '+' cannot be applied to type 'boolean'.
1つの解決策は、このようにすることです
array = [
{ id: 1, label: 'foo' },
{ id: 2, label: 'bar' },
{ id: 3, label: 'foo' },
{ id: 4, label: 'bar' },
{ id: 5, label: 'foo' }
]
array.reduce((acc, arr) => acc + (arr.label === 'foo' ? 1 : 0), 0); // result: 3
まず、線形検索を使用することで、ブルート フォース ソリューションを使用できます。
public int LinearSearchcount(int[] A, int data){
int count=0;
for(int i=0;i<A.length;i++) {
if(A[i]==data) count++;
}
return count;
}
ただし、これを使用すると、時間の複雑さが O(n) になります。しかし、バイナリ検索を使用することで、複雑さを改善できます。