. - 力扣(LeetCode). - 备战技术面试?力扣提供海量技术面试资源,帮助你高效提升编程技能,轻松拿下世界 IT 名企 Dream Offer。https://leetcode.cn/problems/remove-element/description/思路:
代码:
// numsSize表示数组的长度
int removeElement(int* nums, int numsSize, int val) {int src = 0;int dest = 0;//src小于数组的时候进入循环while (src < numsSize) {//nums[src]是否等于vcalif (nums[src] == val) {src++;} else{//先赋值,后自增nums[dest++] = nums[src++];}}//此时det指向的位置就是要返回的有效个数return dest;
}
运行结果:
从上面的代码我们可以看出不管nums[src]是否等于val,dest都要++,那么我们的代码就可以优化一下。
// numsSize表示数组的长度
int removeElement(int* nums, int numsSize, int val) {int src = 0;int dest = 0;//src小于数组的时候进入循环while (src < numsSize) {//nums[src]是否等于vcalif (nums[src] != val) {nums[dest] = nums[src];dest++;} src++;}//此时det指向的位置就是要返回的有效个数return dest;
}