原地移除元素
题目:来源力扣。
思路1
在单数组里面历遍找val,如果是val,就删除。不是就跳过。
时间复杂度O(n^2),最坏情况每个都是val。相当于一个等差数列。
比如
输入:nums = [0,1,2,2,3,0,4,2], val = 2
- 下标0开始找,0不是,不动数组
- 下标1,1不是,不动数组
- 下标2,2是,删除元素,变成【0,1,2,3,0,4,2】
- 下标2,2是,删除元素,变成【0,1,3,0,4,2】
- 下标2,3不是,不动数组
- 下标3,0不是,不动数组
- 下标4,4不是,不动数组
- 下标5,5是,删除元素,变成【0,1,3,0,4】
-
#include <stdio.h> int removeElement(int nums[], int length, int val) { // 初始化计数器 int count = 0; // 遍历数组 for (int i = 0; i < length; i++) { // 如果当前元素不等于 val if (nums[i] != val) { // 将当前元素移到数组的正确位置 nums[count] = nums[i]; // 更新计数器 count++;