LeetCodeの問題解決#14:要素を削除します

タイトル

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

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

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

例1:

给定 nums = [3,2,2,3], val = 3,

函数应该返回新的长度 2, 并且 nums 中的前两个元素均为 2。

你不需要考虑数组中超出新长度后面的元素。

例2:

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

函数应该返回新的长度 5, 并且 nums 中的前五个元素为 0, 1, 3, 0, 4。

注意这五个元素可为任意顺序。

你不需要考虑数组中超出新长度后面的元素。

例3:

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

函数应该返回新的长度 5, 并且 nums 中的前五个元素为 0, 1, 3, 0, 4。

注意这五个元素可为任意顺序。

你不需要考虑数组中超出新长度后面的元素。

最初の文言:

class Solution {
    public int removeElement(int[] nums, int val) {
        if (nums == null  || nums.length == 0){
            return 0;
        }

        int result = nums.length;
        for (int i = 0; i < nums.length; i++) {
            if (nums[i] == val){
                result = result - 1;
            }
        }

        return result;
        
    }
}

その理由は、題し提出する失敗はあなたが仕事を生成するために、新しい配列を持っている必要がありますので、新しい配列の長さを返すように要求されたということです。長さのみを取得するには初版の文言によると、しかし、削除する元の配列のない指定された要素が存在しない、失敗につながります。

文言を変更した後:

class Solution {
    public int removeElement(int[] nums, int val) {
        if (nums == null  || nums.length == 0){
            return 0;
        }

        int result = 0;
        for (int i = 0; i < nums.length; i++) {
            if (nums[i] != val){
                nums[result++] = nums[i];
            }
        }

        return result;
        
    }
}
88元記事公開 ウォン称賛49 ビューに10万+を

おすすめ

転載: blog.csdn.net/Diamond_Tao/article/details/102978713