Я думаю, что мы можем сделать две вещи, чтобы улучшить производительность, но метод не самый лучший, и это зависит от номера вашего списка:
код такой
public static int findMin(List<Integer> distance, int points) {
int sum = 0;
int c = 1;
// sort the list for implement greedy algorithm
Collections.sort(distance, Comparator.reverseOrder());
while (true) {
for (Integer dist : distance) {
sum += dist / c;
// reduce the times of iterate
if (sum <= points) {
return c;
}
}
c++;
sum = 0;
}
}
Будьте осторожны со своей терминологией здесь. UITableView имеет что-то названное a dataSource
но Вы, кажется, относитесь, по существу, к двум различным наборам данных.
В случае Вы предлагаете в таблице dataSource
(объект, который придерживается протокола UITableViewDataSource), у меня было бы три массива.
В методах источника данных используйте currentlyViewedArray в качестве источника данных таблицы.
Затем установите currentlyViewedArray на то, какой бы ни массив Вы хотите просмотреть:
self.currentlyViewedArray = self.datasetOneArray;
[theTableView reloadData];
Можно использовать UISegmentedControl для переключения между двумя массивами.