算法(删除数组元素,删除有序数组中的重复项,合并有序数组)

news2024/9/20 1:11:27

文章目录

  • 删除数组元素
    • 删除有序数组中的重复项
      • 合并有序数组

删除数组元素

题目:给定一个值(val),删除数组中与该值相等的元素,返回值为删除后的数组中元素的个数,并打印删除过后的数组元素。
如:给定一个数组 arr [ ] = {1,2,2,3,4},val = 2
输出结果:arr[ ] = {1,3,4 }

思路:

  1. 分别定义两个整型变量src和dst,同时指向数组中下标为0的元素
  2. 用src去判断该值是否与val相等,相等的话src++继续去判断下一个值,否则就将src指向的值赋给dst,循环下去,知道src遍历完整个数组。
  3. 遍历完之后,返回值就是dst
    在这里插入图片描述
    代码如下:
int fun(int* nums, int Numsize, int val)
{
	int src = 0;
	int dst = 0;
	while (src < Numsize)
	{
		if (nums[src] != val && dst != src)
		{
			nums[dst++] = nums[src];
		}
		src++;
	}
	return dst;
}

int main()
{
	int nums[] = { 1,1,2,2,3,3,4 };
	int val = 3;
	int sz = fun(nums, sizeof(nums) / sizeof(nums[0]), val);
	for (int i = 0; i < sz; i++)
	{
		printf("%d ", nums[i]);
	}
	return 0;
}

删除有序数组中的重复项

题目:在有序数组中找出重复的元素,并删除,返回值为删除后的元素的个数,并打印删除后的数组中的元素。
如:给定一个数组 arr[ ] = { 1,1,2,3,3,4};
打印结果:arr [ ] = {1,2,3,4};

思路:

  1. 同样的,分别定义两个整型变量,src和dst,src指向下标为1的元素,dst指向下标为0的元素
  2. 若两个整型变量指向的元素不相等,dst++,src指向的元素再赋给dst,否则src++,继续去判断下一个元素,直到src遍历完整个数组
  3. 因为dst是先++,再被赋值,所以返回值为dst + 1
    在这里插入图片描述
    代码如下:
int fun(int* nums, int Numsize)
{
	int src = 1;
	int dst = 0;
	while (src < Numsize)
	{
		if (nums[dst] != nums[src] && dst != src)
		{
			nums[++dst] = nums[src];
		}
		src++;
	}
	return dst + 1;
}

//思路:1.用两个整型变量分别指向第一个和第二个元素。
//      2.nums[src] != nums[dst]时,dst++,nums[dst] = nums[src],src++;相等时,src++
int main()
{
	int nums[] = { 1,2,3,3,4,5,5 };
	int sz = fun(nums, sizeof(nums) / sizeof(nums[0]));
	for (int i = 0; i < sz; i++)
	{
		printf("%d ", nums[i]);
	}
	return 0;
}

合并有序数组

题目:将两个有序数组进行合并,m和n分别为第一个数组(nums1)中有效元素的个数,第二个数组(nums2)的大小。nums1的大小为m + n. 将合并后的数,存储到nums1中,并打印nums1中的元素。
如:nums1[6] = {4,5,6,0,0,0};nums2[ 3 ] = {1,2,3};
打印结果:nums1[6] = {1,2,3,4,5,6};

思路:

  1. 定义三个整型变量,l1,l2,l3, 其中,l1代表m - 1(指向nums1中有效元素的最后一个元素),l2代表n - 1(指向nuns2中的最后一个元素),l3代表m + n - 1(指向nuns1的最末尾的空间)
  2. 在l1和l2都大于等于0的情况下,将l1与l2指向的元素进行比较,谁大就将指向的元素赋值给nums1[l3],并且l1-- (l2–),l3–
  3. 若l1提前遍历完了有效元素,而l2还没有遍历完的情况下,则可以直接用一个循环来将nums2中没遍历完的元素放入nums1中
  4. 若l2提前遍历完了元素,而l1还没有遍历完的情况下,就无需再进行遍历了,直接跳出函数
    在这里插入图片描述
    代码如下:
void fun(int* nums1, int* nums2, int m, int n)
{
	int l1 = m - 1;
	int l2 = n - 1;
	int l3 = m + n - 1;
	while (l1 >= 0 && l2 >= 0)
	{
		if (nums1[l1] < nums2[l2])
		{
			nums1[l3--] = nums2[l2--];
		}
		else
		{
			nums1[l3--] = nums1[l1--];
		}
	}
	while (l2 >= 0)
	{
		nums1[l3--] = nums2[l2--];
	}
}

int main()
{
	int nums1[6] = { 4,5,6 };
	int nums2[] = { 1,2,3 };
	fun(nums1, nums2, 3, 3);
	for (int i = 0; i < 6; i++)
	{
		printf("%d ", nums1[i]);
	}
	return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1926086.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

每 日 练 习

目录 一、题目使用方法 二、选择题总结 题目牛客网 一、题目 给定一个字符串比如“abcdef”&#xff0c;要求写个函数变成“defabc”&#xff0c;位数是可变的。 分析 首先&#xff0c;需要确定字符串的分割点。这个点可以是字符串长度的一半&#xff0c;也可以是任何选择的索…

谱瑞科技高速传输接口芯片选型应用

谱瑞科技股份有限公司为一专供多种普及显示器以及个人计算机、消费性电子产品与显示面板所使用之高速讯号传输接口标准之混和信号 IC 芯片之领导供货商。谱瑞公司成立于 2005 年为一无自有晶圆厂之半导体公司&#xff0c;并于 2011 年股票在台湾柜台买卖中心正式挂牌交易(股票代…

搞定ES6同步与异步机制、async/await的使用以及Promise的使用!

文章目录 同步和异步async/awaitPromisePromise的概念 同步和异步 ​ 同步&#xff1a;代码按照编写顺序逐行执行&#xff0c;后续的代码必须等待当前正在执行的代码完成之后才能执行&#xff0c;当遇到耗时的操作&#xff08;如网络请求等&#xff09;时&#xff0c;主线程会…

王牌站士Ⅶ--理解大型语言模型LLM的参数

模型的大小并不一定决定其成功 在学习任何大型语言模型 (LLM) 时&#xff0c;您首先会听到的事情之一就是给定模型有多少个参数。如果您查看下面的图表&#xff0c;您会注意到参数大小范围很广 - 一个模型可能有 10 亿或 20 亿个参数&#xff0c;也可能有超过 1.75 万亿个参数。…

ATC 2024 | 快手开源大模型长序列训练加速技术,性能大幅超越 SOTA 方案

导读 在深度学习领域&#xff0c;训练大型语言模型&#xff08;LLMs&#xff09;一直是一项极具挑战性的任务&#xff0c;它不仅需要巨大的计算资源&#xff0c;同时对内存的消耗也非常巨大。近期&#xff0c;快手大模型团队提出了创新的方法&#xff0c;包括感知流水并行的激…

【学习笔记】无人机(UAV)在3GPP系统中的增强支持(二)-支持高分辨率视频直播应用

引言 本文是3GPP TR 22.829 V17.1.0技术报告&#xff0c;专注于无人机&#xff08;UAV&#xff09;在3GPP系统中的增强支持。文章提出了多个无人机应用场景&#xff0c;分析了相应的能力要求&#xff0c;并建议了新的服务级别要求和关键性能指标&#xff08;KPIs&#xff09;。…

TS真的比JS更好吗?

前言 在讨论TypeScript&#xff08;TS&#xff09;是否比JavaScript&#xff08;JS&#xff09;更好时&#xff0c;我们需要明确“更好”这一概念的上下文和衡量标准。TypeScript和JavaScript在多个方面有着明显的区别&#xff0c;但它们并不是简单的“好”与“不好”的关系&a…

springboot上传图片

前端的name的值必须要和后端的MultipartFile 形参名一致 存储本地

一文搞定:Syncthing多平台文件同步工具安装全攻略

Syncthing是一款开源的文件同步工具&#xff0c;可以通过本地网络或互联网实现多台设备之间的文件同步。与其他同步工具不同&#xff0c;Syncthing强调隐私和安全&#xff0c;确保用户的数据始终处于用户的控制之下。 功能与特点 开源软件&#xff1a; Syncthing是完全开源的&…

base SAS programming学习笔记11(functions)

1.SAS function 分类&#xff1a; 计算描述统计量的函数&#xff1a; 举例如下&#xff1a;avgscoremean(exam1,exam2,exam3) 2.function 基本格式 function-name(argument1,argument2,......<argumentn>&#xff09; argument可以如下&#xff1a;变量名&#xff1b;常…

新手小白的pytorch学习第三弹-------tensor的基本操作

reshape, view, stacking, squeeze(), unsqueeze(),permute()torch.tensor 和 numpy 的 array切片&#xff0c;张量里面获取元素值随机种子 1 导入torch import torch2 reshape() tensor_A torch.arange(1, 11) tensor_Atensor_A.reshape(2, 5) tensor_A.reshape(2, 5)tenso…

C语言 ——— 实用调试技巧(Visual Studio)

目录 Debug 和 Release 的区别 F10 --- 逐过程调试 & F11 --- 逐语句调试 F9 --- 新建/切换断点 & F5 --- 开始调试 shift F5 & ctrl F5 Debug 和 Release 的区别 Debug&#xff1a;通常为调试版本&#xff0c;它包含调试信息&#xff0c;并且不作任何优化…

Unity ColorSpace 之 【颜色空间】相关说明,以及【Linear】颜色校正 【Gamma】的简单整理

Unity ColorSpace 之 【颜色空间】相关说明&#xff0c;以及【Linear】颜色校正 【Gamma】的简单整理 目录 Unity ColorSpace 之 【颜色空间】相关说明&#xff0c;以及【Linear】颜色校正 【Gamma】的简单整理 一、简单介绍 二、在Unity中设置颜色空间 三、Unity中的Gamma…

Vortex GPGPU的硬件代码分析(Cache篇2)

文章目录 前言一、VX_cache.sv代码部分解读2——buffering/initialize1.1 core response buffering与VX_elastic_buffer模块解读1.1.1 VX_pipe_buffer模块解读1.1.1.1 一种握手信号的解释1.1.1.2 世界线收束——VX_pipe_buffer的核心代码解释1.1.1.3 VX_pipe_register模块解读与…

算法015:串联所有单词的子串

串联所有单词的子串. - 备战技术面试&#xff1f;力扣提供海量技术面试资源&#xff0c;帮助你高效提升编程技能,轻松拿下世界 IT 名企 Dream Offer。https://leetcode.cn/problems/substring-with-concatenation-of-all-words/ 如果是第一次接触这个题目&#xff0c;接触滑动…

埋点系统如何统计用户的平均停留时长?

Hello&#xff0c;大家好&#xff0c;欢迎使用Webfunny前端监控和埋点系统。 今天&#xff0c;我们将介绍webfunny的埋点系统如何统计用户的平均停留时长 一、页面beforeLeave事件 当你页面离开的时候&#xff0c;会触发一个心跳检测&#xff0c;但是这个可能不是100%触发&am…

跳表的简单学习

跳表&#xff08;SkipList&#xff09;学习 1. 什么是跳表&#xff1f; 基于“空间换时间”思想&#xff0c;通过给链表建立索引&#xff0c;使得链表能够实现二分查找。 跳表是可以实现二分查找的有序链表。 2. 从单链表到跳表 对于一般的单链表&#xff0c;在其中进行查…

EasyCVR视频技术:城市电力抢险的“千里眼”,助力抢险可视化

随着城市化进程的加速和电力需求的不断增长&#xff0c;电力系统的稳定运行对于城市的正常运转至关重要。然而&#xff0c;自然灾害、设备故障等因素常常导致电力中断&#xff0c;给城市居民的生活和企业的生产带来严重影响。在这种情况下&#xff0c;快速、高效的电力抢险工作…

【PVE】新增2.5G网卡作为主网卡暨iperf测速流程

【PVE】新增2.5G网卡作为主网卡暨iperf测速流程 新增网卡 新增网卡的首先当然需要关闭PVE母机&#xff0c;把新网卡插上&#xff0c;我用淘宝遥现金搞了个红包&#xff0c;花了26元买了块SSU的2.5G网卡。说实话这个价位连散热片都没有&#xff0c;确实挺丐的。稍后测下速度看…

从零开始做题:segmentFlow

题目 解题 import string import binascii def Crack_4B(crc_list):print(-------------Start Crack CRC 4B-------------)#crc_list [0xc0a3a573, 0x3cb6ab1c, 0x85bb0ad4, 0xf4fde00b]#文件的CRC32值列表&#xff0c;注意顺序comment chars string.printableflag 0 for …