思路
暴力做的,本以为不会过。最后过了。
寻找数组中元素和目标值相等的起始位置以及长度。最后做下数组的截取操作。
其实内部消耗的内存已经不止O(1)了,最后还是过了。
执行用时 :4 ms, 在所有 PHP 提交中击败了98.80%的用户
内存消耗 :14.8 MB, 在所有 PHP 提交中击败了18.40%的用户
代码
class Solution {
/**
* @param Integer[] $nums
* @param Integer $val
* @return Integer
*/
function removeElement(&$nums, $val) {
sort($nums);
$size = count($nums);
$len = 1;
$start = 0;
$found = 0;
for ($i = 0; $i < ($size); $i++) {
if($nums[$i] == $val) {
$start = $i;
$found = 1;
for ($j = $start + 1; $j < $size; $j++) {
if ($nums[$j] == $val) {
$len++;
} else {
break;
}
}
break;
}
}
if ($found == 0) {
return count($nums);
}
if ($start == 0) {
$nums = array_slice($nums, $start + $len, $size - 1);
} else if (($start + $len) == $size) {
$nums = array_slice($nums, 0, $start);
} else {
$nums = array_merge(array_slice($nums, 0, $start), array_slice($nums, $start + $len, $size - $start));
}
return count($nums);
}
}