1.暴力解法
数组的元素在内存地址中是连续的,不能单独删除数组中的某个元素,只能覆盖
//暴力解法int n=nums.length;for(int i=0;i<n;i++){if(nums[i]==val){//第一层循环先找到目标值的位置for(int j=i+1;j<n;j++){nums[j-1]=nums[j];//第二层循环让目标值后面的元素都往前移动一位}i--;//i回到目标值前一位的索引(因为目标值后面的元素都往前移动了一位)n--;//数组整体长度也减1}}return n;}
2.双指针
//双指针法int n=nums.length;int slowindex=0;for(int fastindex=0;fastindex<n;fastindex++){if(nums[fastindex]!=val){nums[slowindex]=nums[fastindex];//快指针不指向目标值的时候,让慢指针往后移动一位,这样当快指针指向目标值的时候,慢指针正好在目标值前一位,当下次快指针指向非目标值的时候,正好让慢指针覆盖了目标值slowindex++;}}return slowindex;