Leetcode(Java)の-27。要素を削除します

配列NUMSと値valを考えると、あなたはすべて同じ値valを削除するために要素を配置する必要があり、除去後の配列の長さを返します。

配列のための余分なスペースを使用しないでください、あなたは代わりに入力配列を変更し、使用のO(1)余分なスペースの条件の下で完了しなければなりません。

要素の順序を変更してもよいです。あなたは、新しい配列の長さの背後の要素を超えて検討する必要がありません。

例1:

所与NUMS = [3,2,2,3]、ヴァル= 3、

関数は、2の新しい長さを返す必要がありますし、最初の2つの要素のNUMSは2です。

あなたは、新しい配列の長さの背後の要素を超えて検討する必要がありません。
例2:

所与NUMS = [0,1,2,2,3,0,4,2]、ヴァル= 2、

新しい関数は、長さ5を返す必要があり、最初の5つの要素NUMSは0、1、3、0、4です。

これらの5つの要素は任意の順序であることに注意してください。

あなたは、新しい配列の長さの背後の要素を超えて検討する必要がありません。
説明:

なぜ、戻り値は整数ですが、答えは、それの出力の配列ですか?

入力アレイは、入力配列を変更することを意味する「参照」モードで渡されることに注意してくださいは、関数内の呼び出し元に表示されてください。

あなたは次のように内部動作があると想像することができます:

// NUMSはで渡さ「参照」です。これは、任意のコピー右引数である
int型のlen = removeElement(NUMS、ヴァル )。

//関数内の入力アレイと、発信者が表示されている変更。
//あなたの関数の戻りの長さは、それが配列の長さの範囲のすべての要素を出力します。
(;私は<lenを、INT I = 0 I ++){用
    プリント(NUMS [I]);
}

 

class Solution {
public int removeElement(int[] nums, int val) {
    int i = 0;
    for (int j = 0; j < nums.length; j++) {
        if (nums[j] != val) {
            nums[i] = nums[j];
            i++;
        }
    }
    return i;
}
}

 

发布了255 篇原创文章 · 获赞 35 · 访问量 2万+

おすすめ

転載: blog.csdn.net/qq_38905818/article/details/104616380