当前位置:网站首页>(oj)原地移除数组中所有的元素val、删除排序数组中的重复项、合并两个有序数组
(oj)原地移除数组中所有的元素val、删除排序数组中的重复项、合并两个有序数组
2022-08-05 05:17:00 【Captain林】
本篇文章计划用简单的代码方式向大家介绍题目所述的三个oj题的解题方法
目录
1. 原地移除数组中所有的元素val
题目如下


解法如下

int removeElement(int* nums, int numsSize, int val)
{
int left = 0;
for(int right=0; right<numsSize; right++)
{
if(nums[right] != val)//要改变数组
{
nums[left] = nums[right];
left++;
}
}
return left;
}2. 删除排序数组中的重复项
题目如下


解法如下

int removeDuplicates(int* nums, int numsSize){
int src = 1;
int dst = 0;
while(src < numsSize)
{
if(nums[src] == nums[dst])
{
src++;
}
else
{
dst++;
nums[dst] = nums[src];
src++;
}
}
return dst+1;
}3.合并两个有序数组
题目如下

解法如下
设end、end1、end2,当end1指向的值大于end2,先将end1的值放到end所在位置,反之亦然
注意:有可能会出现end1遍历完而end2没有遍历完的情况,这时可以额外增加一个循环使数组nums2的所有值复制到数组nums1上

void merge(int* nums1, int nums1Size, int m, int* nums2, int nums2Size, int n)
{
int end1 = m-1;
int end2 = n-1;
int end = m+n-1;
while(end1 >= 0 && end2 >= 0)
{
if(nums1[end1] > nums2[end2])
{
nums1[end--] = nums1[end1--];
}
else
{
nums1[end--] = nums2[end2--];
}
}
while(end2 >= 0)
{
nums1[end--] = nums2[end2--];
}
}4.结语
看到这里,相信老铁们对如何解决上述oj题有了相应的了解。
我是计算机海洋的新进船长Captain_ldx,如果我的文章能对您有帮助的话,麻烦各位观众姥爷们点赞、收藏、关注,你们的每一次举手之劳都将化为船长的前进动力!
边栏推荐
猜你喜欢

【shell编程】第三章:函数

Tensorflow踩坑笔记,记录各种报错和解决方法

Thread handler句柄 IntentServvice handlerThread

Thread handler handle IntentServvice handlerThread

【数据库和SQL学习笔记】4.SELECT查询2:排序(ORDER BY)、聚合函数、分组查询(GROUP BY)

数控直流电源

【Pytorch学习笔记】9.分类器的分类结果如何评估——使用混淆矩阵、F1-score、ROC曲线、PR曲线等(以Softmax二分类为例)

PID详解

常见的 PoE 错误和解决方案

LeetCode刷题之第530题
随机推荐
全尺度表示的上下文非局部对齐
LeetCode刷题之第1024题
最简单的防抖节流理解法
关于存储IOPS你必须了解的概念
网管日记:故障网络交换机快速替换方法
LeetCode刷题之第23题
深度学习系列(二)优化器 (Optimization)
教你如何封装功能组件和页面组件
leetCode刷题之第31题
基于STM32F4的FFT+测频率幅值相位差,波形显示,示波器,时域频域分析相关工程
【ts】typescript高阶:分布式条件类型
三、自动配置源码分析
MySQL主从复制—有手就能学会的MySQL集群搭建教程
GIS面试问题
原型版本管理
LeetCode刷题之第746题
LeetCode刷题之第701题
CVPR 2020 - 频谱正则化
《基于机器视觉测量系统的工业在线检测研究》论文笔记
读论文 - Unpaired Portrait Drawing Generation via Asymmetric Cycle Mapping