LeetCode 26&27は、双指針法を用いて配列要素を除去する.

919 ワード

順序配列を指定します.各要素は一回だけ現れ、除去された配列の新しい長さを返します.追加の配列空間を使用しないでください.入力配列を元の場所で変更し、O(1)の追加空間を使用した条件で完成しなければなりません.
考え方:二重針i,j,iは遅い針、jは速い針を使う.num[i]==num[j]をスキップするとnum[i]=num[j]をスキップし、iを追加します.
class Solution {
    public int removeDuplicates(int[] nums) {
        
       if(nums.length==0)   return 0;
        int i = 0;
        for(int j = 1;j
行列numsと値valを指定します.その場ですべての値がvalに等しい要素を除去し、除去された配列の新しい長さを返します.追加の配列空間を使用しないでください.入力配列を元の場所で変更し、O(1)の追加空間を使用した条件で完成しなければなりません.元素の順序は変えられます.配列の中から新しい長さを超える要素を考慮する必要はありません.
同じように、二重指の針を使って、遅い針と速い針をセットします.初試しi=0、num[j]!target時はnum[i]=num[j],i+.最後にiに戻ります
class Solution {
    public int removeElement(int[] nums, int val) {
        
       int i=0;
        
        for(int j=0;j
以上の解答はLeetCodeの公式解答から来ました.