27. 移除元素 golang

空间复杂度O(1)

题目中不需要保持数组按照原来的顺序。

返回值是删除完key的剩余元素个数。所以我们使用前后指针,f指针指到key的位置,l指最后非key的位置。交换元素。

func removeElement(nums []int, val int) int {
    i, j := 0, len(nums) - 1
    for {
        for i < len(nums) && nums[i] != val {
            i++
        }

        for j >= 0 && nums[j] == val {
            j--
        }

        if i >= j {
            break 
        }

        nums[i], nums[j] = nums[j], nums[i]
    }  
    return i 
}

你可能感兴趣的:(LeetCode,leetcode)