力扣刷题:数组OJ篇(上)
大家好,这里是小编的博客频道
小编的博客:就爱学编程
很高兴在
CSDN
这个大家庭与大家相识,希望能在这里与大家共同进步,共同收获更好的自己!!!
目录
- 1.消失的数字
- (1)题目描述
- (2)解题思路
- 2.删除数组中的重复项
- (1)题目描述
- (2)解题思路
- 3.移除元素
- (1)题目描述
- (2)解题思路
- 快乐的时光总是短暂,咱们下篇博文再见啦!!!如果小编的文章会对你有帮助的话不要忘了,记得给小编点赞、收藏支持一下,在此非常感谢!!!
废话不多说,我们直接看题。
1.消失的数字
(1)题目描述
(2)解题思路
按位异或
代码实现:
int missingNumber(int* nums, int numsSize) {
int sum = 0;
for(int i = 0; i < numsSize; i++){
sum ^= nums[i];
}
for(int i = 0; i <= numsSize; i++){
sum ^= i;
}
return sum;
}
2.删除数组中的重复项
(1)题目描述
(2)解题思路
双指针
代码实现:
int removeDuplicates(int* nums, int numsSize) {
if(numsSize == 0) return 0;
int fast = 0, slow = 0;
while(fast < numsSize - 1){
if(nums[fast] != nums[fast + 1]){
nums[++slow] = nums[++fast];
}
else{
++fast;
}
}
//实际中返回值是slow还是slow+1代值即可验证
return slow + 1;
}
3.移除元素
(1)题目描述
(2)解题思路
双指针
代码实现:
int removeElement(int* nums, int numsSize, int val) {
//确保快指针全部遍历一次即可
int slow = 0, fast = 0;
while(fast < numsSize){
if(nums[fast] != val){
nums[slow++] = nums[fast];
}
++fast;
}
return slow;
}