leetcode-594. 最长和谐子序列
双指针,后面那个边界条件让我调了好几分钟
func findLHS(nums []int) int {
sort.Ints(nums)
left, right, maxLen := 0, 0, 0
for {
if nums[right] - nums[left] > 1 {
left++
} else if nums[right] - nums[left] < 1 {
right++
} else if nums[right] - nums[left] == 1 {
subLen := right - left + 1
if subLen > maxLen {
maxLen = subLen
}
right++
}
if right > len(nums) - 1 {
right = len(nums) - 1
left++
}
if left >= len(nums) - 1 {
break;
}
}
return maxLen
}
优化一下代码,上面的双指针太不优雅了
func findLHS(nums []int) int {
sort.Ints(nums)
left, maxLen := 0, 0
for right, num := range nums {
if num - nums[left] > 1 {
left++
}
if num - nums[left] == 1 && right - left + 1 > maxLen {
maxLen = right - left + 1
}
}
return maxLen
}
本文来自博客园,作者:吴丹阳-V,转载请注明原文链接:https://www.cnblogs.com/wudanyang/p/17018020.html

浙公网安备 33010602011771号