要素を除去するgolang実装

3146 ワード

配列numsと値valを指定すると、valに等しいすべての数値の要素をその場で除去し、除去後の配列の新しい長さを返す必要があります.
余分な配列空間を使用しないでください.入力配列をその場で変更し、O(1)余分な空間を使用する条件で完了する必要があります.
要素の順序は変更できます.配列の中で新しい長さの後ろを超える要素を考慮する必要はありません.
   nums = [3,2,2,3], val = 3,

           2,    nums           2。

                   。

   nums = [0,1,2,2,3,0,4,2], val = 2,

           5,    nums          0, 1, 3, 0, 4。

             。

                   。

まず、問題の意味を理解します.
  • 所与の配列が空である場合、0
  • を返すべきである.
  • であり、他の配列空間を導入することはできない.すなわち、結果
  • を格納するために新しい配列を使用することはできない.
    実はこの問題はとても簡単で、1つのインデックスだけでいいです.
    func removeElement(nums []int, val int) int {
        //      ,    0
        if len(nums) == 0 {
            return 0
        }
        //     
        //     
        //               
        //       ,   1
        index := 0
        for ; index < len(nums); {
            if nums[index] == val {
                nums = append(nums[:index], nums[index+1:]...)
                continue
            }
            index++
        }
        return len(nums)
    }

     
    転載先:https://www.cnblogs.com/TimLiuDream/p/9997934.html