您好我有一個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; }
它不直接修改的原因是這種方法檢查「當前子數組是否具有所有連續元素」,而日期不是「連續元素」。您可以將日期視爲「一年中的某些日子」或其他可能使其成爲潛在連續元素的其他內容,但這不是直截了當的。 – alfasin
是的,我修改了這段代碼,但它只工作了一個月 –