Найдите количество файлов с определенным расширением во всех подкаталогах

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). Я думаю, что это невозможно сделать быстрее.

19
задан Nicolas Raoul 13 May 2016 в 11:43
поделиться

4 ответа

Необходимо использовать Каталог. 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();
35
ответ дан 30 November 2019 в 02:18
поделиться

Используя рекурсию Ваш 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 могло бы быть лучшее.

1
ответ дан 30 November 2019 в 02:18
поделиться

Можно использовать эту перегрузку GetFiles:

Каталог. Метод GetFiles (Строка, Строка, SearchOption)

и этот член SearchOption:

AllDirectories - Включает текущий каталог и все подкаталоги в операции поиска. Эта опция включает точки повторного анализа как подсоединенные внешние диски и символьные ссылки в поиске.

GetFiles возвращает массив строки, таким образом, можно просто получить Длину, которая является количеством найденных файлов.

7
ответ дан 30 November 2019 в 02:18
поделиться

Кто-то должен сделать часть итерации.

AFAIK, уже нет такого метода, существующего в.NET, таким образом, я предполагаю, что кто-то должен быть Вами.

0
ответ дан 30 November 2019 в 02:18
поделиться
Другие вопросы по тегам:

Похожие вопросы: