LeetCode【27.要素の削除】

国のために命を犠牲にして戦場に行くことは忠誠と栄光の証です。

配列 nums と value が与えられた場合、 同じ値を 持つすべての要素を削除し、削除後の配列の新しい長さを返すval必要があります 。val 

余分な配列スペースは使用しないでください。 O(1) 余分なスペースのみを使用し、 入力配列をその場で 変更する必要があります。

要素の順序は変更できます。新しい長さを超える配列内の要素を考慮する必要はありません。

答え:ジャワ

public class Solution {
    public int removeElement(int[] nums, int val) {
        int n = nums.length;
        int j = 0; // 慢指针

        for (int i = 0; i < n; i++) {
            if (nums[i] != val) {
                nums[j] = nums[i];
                j++;
            }
        }

        return j;
    }

    public static void main(String[] args) {
        Solution solution = new Solution();
        int[] nums1 = {3, 2, 2, 3};
        int val1 = 3;
        int len1 = solution.removeElement(nums1, val1);
        System.out.println(len1);  // 输出 2
        for (int i = 0; i < len1; i++) {
            System.out.print(nums1[i] + " ");
        }
        System.out.println();  // 输出 2 2

        int[] nums2 = {0, 1, 2, 2, 3, 0, 4, 2};
        int val2 = 2;
        int len2 = solution.removeElement(nums2, val2);
        System.out.println(len2);  // 输出 5
        for (int i = 0; i < len2; i++) {
            System.out.print(nums2[i] + " ");
        }
        System.out.println();  // 输出 0 1 3 0 4
    }
}

おすすめ

転載: blog.csdn.net/s_sos0/article/details/132912933