Примечание читателям: Несколько комментаторов указали на некоторые проблемы в этом ответе (связанный особенно с первым предложением). Обратитесь к разделу комментариев для получения дополнительной информации.
DateTime.UtcNow.ToString("yyyy-MM-ddTHH\\:mm\\:ss.fffffffzzz");
Это дает Вам дату, подобную [1 112] 2008-09-22T13:57:31.2311892-04:00.
Иначе:
DateTime.UtcNow.ToString("o");
, который дает Вам 2008-09-22T14:01:54.9571247Z
Для получения указанного формата, можно использовать:
DateTime.UtcNow.ToString("yyyy-MM-ddTHH:mm:ssZ")
Возможно, вы ищете алгоритм «Частый». Он использует счетчики k - 1 для нахождения всех элементов, которые превышают 1 / k от общего числа, и был опубликован в 1982 году Мисрой и Грисом. Это обобщение алгоритма «большинства» Бойера и Мура (или Фишера-Зальцберга), где k равно 2. Эти и связанные с ними алгоритмы представлены в полезной статье «Проблема Бритни Спирс».
Я даю подробное объяснение алгоритма в другом месте на StackOverflow, , которое я не буду здесь повторять. Важным моментом является то, что после одного прохода значения счетчика не точно указывают частоту элемента; они могут занижать счет с запасом, который зависит от длины потока и, наоборот, от количества счетчиков ( n / k ). Все эти алгоритмы (включая "SpaceSaving" Метвалли) требуют второго прохода, если вам нужен точный подсчет, а не оценка частоты.