国のために命を犠牲にして戦場に行くことは忠誠と栄光の証です。
配列 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
}
}