0個の値も含む配列をどのように並べ替えますか?
- -54
- 0
- -12
- 0
- -10
そしてそれを定数(たとえば-5)と比較すると、対応する最も近い値(最小の差)のインデックスが返されますか?(つまり、最も近い値= -10、つまり戻り値= 4)
ここでの0の値であるという課題は常に見落とされるべきであり、配列を事前にソートすることはできません。
同様の問題がありますが、私の場合は答えが うまくいきません。任意の(非メンバー)数値に最も近い配列要素を見つけるにはどうすればよいですか?
0個の値も含む配列をどのように並べ替えますか?
そしてそれを定数(たとえば-5)と比較すると、対応する最も近い値(最小の差)のインデックスが返されますか?(つまり、最も近い値= -10、つまり戻り値= 4)
ここでの0の値であるという課題は常に見落とされるべきであり、配列を事前にソートすることはできません。
同様の問題がありますが、私の場合は答えが うまくいきません。任意の(非メンバー)数値に最も近い配列要素を見つけるにはどうすればよいですか?
それは比較的簡単です。
NSArray *data = @[@-54, @0, @-12, @0, @-10];
NSUInteger best = 0;
int target = -5;
for (NSUInteger i = 1 ; i < data.count ; i++) {
int a = [[data objectAtIndex:best] intValue];
int b = [[data objectAtIndex:i] intValue];
if (b && abs(a-target) > abs(b-target)) { // Ignore zeros, check diff
best = i;
}
}
// At this point, "best" contains the index of the best match
NSLog(@"%lu",best); // Prints 4