双指针法
用两个同向或者反向的指针来代替两重循环。
提醒:不要老想着用同向双指针,有时候,相向双指针更容易解决问题。
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;
}
}