こんにちは私はArraylist
の日付を昇順で含んでいます。日付はこの形式のyyyy-MM-dd
です。今度は、Arraylist
の中で最も長い連続した部分列を探したいと思います。私はソリューションをオンラインでチェックしていますが、それらはint配列に関連しており、日付配列を探したいと思っています。 int配列のための コード:日付の中で最も長い連続したサブシーケンス
// Returns length of the longest contiguous subarray
int findLength(int arr[], int n)
{
int max_len = 1; // Initialize result
for (int i=0; i<n-1; i++)
{
// Initialize min and max for all subarrays starting with i
int mn = arr[i], mx = arr[i];
// Consider all subarrays starting with i and ending with j
for (int j=i+1; j<n; j++)
{
// Update min and max in this subarray if needed
mn = min(mn, arr[j]);
mx = max(mx, arr[j]);
// If current subarray has all contiguous elements
if ((mx - mn) == j-i)
max_len = max(max_len, mx-mn+1);
}
}
return max_len; // Return result
}
// Utility functions to find minimum and maximum of
// two elements
int min(int x, int y) { return (x < y)? x : y; }
int max(int x, int y) { return (x > y)? x : y; }
変更が簡単ではない理由は、「現在のサブ配列にすべての連続する要素が含まれていて、日付が「連続した要素」でないかどうかをチェックすることです。 Datesを「年の日」とか、それを潜在的に連続する要素にする何かを扱うことはできますが、これは簡単ではありません。 – alfasin
はいこのコードを変更しましたが、そのコードは1か月間しか使用できません –