public static double maxProfit(double [] stockPrices)
{
double initIndex = 0, finalIndex = 0;
double tempProfit = list[1] - list[0];
double maxSum = tempProfit;
double maxEndPoint = tempProfit;
for(int i = 1 ;i<list.length;i++)
{
tempProfit = list[ i ] - list[i - 1];;
if(maxEndPoint < 0)
{
maxEndPoint = tempProfit;
initIndex = i;
}
else
{
maxEndPoint += tempProfit;
}
if(maxSum <= maxEndPoint)
{
maxSum = maxEndPoint ;
finalIndex = i;
}
}
System.out.println(initIndex + " " + finalIndex);
return maxSum;
}
Вот мое решение. изменяет алгоритм максимальной подпоследовательности. Решает проблему в O (n). Я думаю, что это невозможно сделать быстрее.
Необходимо использовать Каталог. GetFiles (путь, searchPattern, SearchOption) перегрузка Каталога. GetFiles ().
Путь указывает, что путь, searchPattern указывает Ваши подстановочные знаки (например, *, *.format), и SearchOption предоставляет возможность включать подкаталоги.
свойство Length возвращаемого массива этого поиска обеспечит надлежащий счет файла для Вашего конкретного шаблона поиска и опции:
string[] files = directory.GetFiles(@"c:\windows\system32", "*.dll", SearchOption.AllDirectories);
return files.Length;
РЕДАКТИРОВАНИЕ: , Кроме того, можно использовать Каталог. Метод EnumerateFiles
return Directory.EnumerateFiles(@"c:\windows\system32", "*.dll", SearchOption.AllDirectories).Count();
Используя рекурсию Ваш MagicFindFileCount был бы похож на это:
private int MagicFindFileCount( string strDirectory, string strFilter ) {
int nFiles = Directory.GetFiles( strDirectory, strFilter ).Length;
foreach( String dir in Directory.GetDirectories( strDirectory ) ) {
nFiles += GetNumberOfFiles(dir, strFilter);
}
return nFiles;
}
, Хотя решением Jon могло бы быть лучшее.
Можно использовать эту перегрузку GetFiles:
и этот член SearchOption:
AllDirectories - Включает текущий каталог и все подкаталоги в операции поиска. Эта опция включает точки повторного анализа как подсоединенные внешние диски и символьные ссылки в поиске.
GetFiles возвращает массив строки, таким образом, можно просто получить Длину, которая является количеством найденных файлов.
Кто-то должен сделать часть итерации.
AFAIK, уже нет такого метода, существующего в.NET, таким образом, я предполагаю, что кто-то должен быть Вами.