移动元素
解题要求:
给定一个数组 nums 和一个值 val,你需要原地移除所有数值等于 val 的元素,返回移除后数组的新长度。
不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。
元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。
附上代码
一、java解题
class Solution {
public int removeElement(int[] nums, int val) {
int z=0;
for(int i=0;i<nums.length;i++){
if(nums[i]==val){
z++;
}
else{
nums[i-z]=nums[i];
}
}
return nums.length-z;
}
}
按照题目解题思路,首先我们要计算要有多少个目标数,总长度减去目标数数量这就是我们要的结果,第二将数组元素移动,只要将非目标数向前移动就可以了。
二、PHP解题
最近在学习PHP解题一般会有两种语言
class Solution {
/**
* @param Integer[] $nums
* @param Integer $val
* @return Integer
*/
function removeElement(&$nums, $val) {
$z=0;
for($i =0;$i<count($nums);$i++){
if($nums[$i]!=$val){
$nums[$z]=$nums[$i];
$z++;
}
}
return $z;
}
}
其实语言都是相通的,只是语法有一些差异,最重要的还是解题思路。