数组——双指针法

双指针法

用两个同向或者反向的指针来代替两重循环。


提醒:不要老想着用同向双指针,有时候,相向双指针更容易解决问题。

LeetCode

27

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

283

class Solution {
    public void moveZeroes(int[] nums) {
        int k=0;
        for(int i=0;i<nums.length;i++){
            if(nums[i]!=0){
                nums[k]=nums[i];
                k++;
            }
        }

        for(int i=k;i<nums.length;i++){
            nums[i]=0;
        }
    }
}

844

class Solution {
    public boolean backspaceCompare(String s, String t) {
        char[] ss=s.toCharArray();
        char[] tt=t.toCharArray();
        int k=0;
        for(int i=0;i<s.length();i++){
            if(s.charAt(i)!='#'){
                ss[k]=ss[i];
                k++;
            }else{
               if(k>0){
                   k--;
               }
            }
        }
        int res=k;
        k=0;
        for(int i=0;i<t.length();i++){
            if(t.charAt(i)!='#'){
                tt[k]=tt[i];
                k++;
            }else{
               if(k>0){
                   k--;
               }
            }
        }
        if(k!=res){
            return false;
        }
        else{
            for(int i=0;i<k;i++){
                if(tt[i]!=ss[i]){
                    return false;
                }
            }
        }
        return true;
    }
}

你可能感兴趣的:(leetcode,java)