leetcode-594. 最长和谐子序列

594. 最长和谐子序列 - 力扣(Leetcode)

双指针,后面那个边界条件让我调了好几分钟

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
}
posted @ 2023-01-01 13:46  吴丹阳-V  阅读(17)  评论(0)    收藏  举报