halfrost / LeetCode-Go

✅ Solutions to LeetCode by Go, 100% test coverage, runtime beats 100% / LeetCode 题解
https://books.halfrost.com/leetcode
MIT License
32.98k stars 5.7k forks source link

0027 Remove Element 有道题不明白 #200

Closed fecqs closed 2 years ago

fecqs commented 2 years ago

https://github.com/halfrost/LeetCode-Go/blob/a45992e7dec015e7a239f628e4e6e99209391615/leetcode/0027.Remove-Element/27.%20Remove%20Element.go#L10

func removeElement(nums []int, val int) int {

    if len(nums) == 0 {
        return 0
    }

    j := 0
    for i := 0; i < len(nums); i++ {
        if nums[i] != val {
                         // 我不明白为什么要非加这段求解释。      
            //if i != j {
            //  nums[i], nums[j] = nums[j], nums[i]
            //}
            j++
        }
    }
    return j

}
halfrost commented 2 years ago

@fecqs 这一行代码去掉当然也可以 Accept。我加这一行只是为了提高一下速度,因为 i = j 的时候,代表同一个元素,此时第 11 行代码再做一个交换就没有意义了,而且也浪费 runtime 时间。

fecqs commented 2 years ago

@fecqs 这一行代码去掉当然也可以 Accept。我加这一行只是为了提高一下速度,因为 i = j 的时候,代表同一个元素,此时第 11 行代码再做一个交换就没有意义了,而且也浪费 runtime 时间。

thx。