顺序表经典算法及其相关思考

27. 移除元素 - 力扣(LeetCode)

思路一

    利用顺序表中的SLDestroy函数的思想,遇到等于val值的就挪动

思路二

双指针法:不停的将和val不相等的数字往前放。此时的des更像一个空数组,里面存放的都是和val不相等、能够存放的数字

src不等的时候才放,这样让所有和val不相等的数字都放进“dst指着尾巴的数组”去了

src是源数据,dst是目标位置

int removeElement(int* nums, int numsSize, int val) {//双指针法int src=0;int dst=0;while(src<numsSize){if(nums[src]==val){src++;}else {nums[dst++]=nums[src++];}}return dst;
}

实现如上。

88. 合并两个有序数组 - 力扣(LeetCode)

思路一:

直接使用循坏合并,再用qsort(qsort永存!)

int int_compare(const void* p1,const void* p2){return *(int*)p1-*(int*)p2;
}void merge(int* nums1, int nums1Size, int m, int* nums2, int nums2Size, int n) {//暴力qsortfor(int i=m,q=0;i<m+n;i++,q++){nums1[i]=nums2[q];}qsort(nums1,m+n,sizeof(nums1[0]),&int_compare);
}

思路2:

因为想从空白位置开始放(这样才能边放边比较),所以倒着从屁股开始放并且找“大”

每塞进去一个,相应的(l1或者l2)下标就减少一个

不用担心l3和l1撞到一起:1. 如果是将l2塞进空白位置,只有当全部只塞l2的时候才会出现l3和l1重合的情况(因为nums1的长度是经过计算的m+n,详情见题目)

2.如果是将nums1自己的元素塞在了数组末尾,也不用担心,因为l3和l1同时--,永远不会相遇

       但是这样的特殊情况:l1都出去了,nums2还没有都塞进去,这就说明nums1中剩余的没有被替换的数据一定是非降序并且大于等于nums2中没有放进去的数据,所以再使用一个正序的循坏塞进nums1即可 

实现如下:

void merge(int* nums1, int nums1Size, int m, int* nums2, int nums2Size, int n) {//暴力qsort// for(int i=m,q=0;i<m+n;i++,q++){//     nums1[i]=nums2[q];//}//qsort(nums1,m+n,sizeof(nums1[0]),&int_compare);//已通过测试//逆向插入int pos1,pos2,pos3;pos1=m-1;//point to the end of nums1pos2=n-1;//point to the end of nums2pos3=m+n-1;//point to the end of m+nwhile(pos1>=0&&pos2>=0){if(nums1[pos1]<nums2[pos2]){nums1[pos3]=nums2[pos2];pos3--,pos2--;}else{nums1[pos3]=nums1[pos1];pos3--,pos1--;}}for(;pos2>=0;pos2--){nums1[pos2]=nums2[pos2];}
}

2.顺序表延伸的相关思考 

1.顺序表的头插和尾差时间复杂度是O(N)

2.增容势必造成浪费,拷⻉数据,释放旧空间。会有不⼩效率的消耗。

    同时,增容都是成倍的增长,假如我原有一百个空间,只需要增加一个空间,就会扩容到两百个空间,造成很多浪费。

那么,有没有一种数据结构可以解决以上的问题呢?

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

L2 清点代码库----PTA(疑问)

上图转自新浪微博&#xff1a;“阿里代码库有几亿行代码&#xff0c;但其中有很多功能重复的代码&#xff0c;比如单单快排就被重写了几百遍。请设计一个程序&#xff0c;能够将代码库中所有功能重复的代码找出。各位大佬有啥想法&#xff0c;我当时就懵了&#xff0c;然后就挂…

接口自动化测试丨如何实现多套环境的自动化测试?

在敏捷迭代的项目中&#xff0c;通常会将后台服务部署到多套测试环境。那么在进行接口自动化测试时&#xff0c;则需要将服务器的域名进行配置。使用一套接口测试脚本&#xff0c;通过切换域名地址配置&#xff0c;实现多套环境的自动化测试。 实战练习 分别准备两套测试环境…

多端开发围炉夜话

文章目录 一、多端开发 一、多端开发 uni-app 官网 UNI-APP中的UI框架&#xff1a;介绍常用的UI框架及其特点 uView UIVant WeappColor UIMint UI uniapp嵌入android原生开发的功能 uniapp使用安卓原生sdk uni-app中的uni.requireNativePlugin Qt for iOS Qt for Android

Linux-时间接口-005

学习重点&#xff1a; 1.函数接口 2.【ls-l】命令的实现1【time】 1.1函数原型 【time_t time(time_t *tloc);】1.2函数功能 返回1970-1-1到现在的秒数&#xff08;格林威治时间&#xff09;1.3函数参数 1.3.1【tloc】 存放秒数空间首地址 存放的秒数&#xff1a;如果【t…

SpringBoot集成Mqtt发送消息

1. MQTT简介 MQTT是一种物联网消息协议&#xff0c;为Message Queuing Telemetry Transport的缩写&#xff0c;即消息队列传输探测&#xff0c;协议基于发布订阅模式进行通信&#xff0c;有开销低、带宽小、轻量的特点&#xff0c;通常应用在物联网数据采集、移动应用、智能硬…

pandas/geopandas 笔记:判断地点在不在路网上 不在路网的点和路网的距离

0 导入库 import osimport pandas as pd pd.set_option(display.max_rows,5)import osmnx as oximport geopandas as gpd from shapely.geometry import Point 1 读取数据 假设我们有 如下的数据&#xff1a; 1.1 新加坡室外基站位置数据 cell_stationpd.read_csv(outdoor…

面试答疑03

1、登录鉴权怎么做的&#xff1f;为什么采用jwt的方式&#xff1f;有什么好处&#xff1f; Java登录鉴权常见的实现方式包括**CookieSession、HTTP Basic Authentication、ServletJDBC**等。 在Java的Web应用中&#xff0c;登录鉴权是确认用户身份的关键环节。一个常用的传统…

《探索网校 App 的魅力世界:知识与科技的完美结合》

在数字化时代&#xff0c;教育也在经历着深刻的变革。网校 App 的出现&#xff0c;正为学习者们开启了一扇通往知识的新大门&#xff0c;它融合了科技的力量&#xff0c;让学习变得更加便捷、高效和有趣。 一、功能与优势 网校 App 提供了丰富多样的学习功能&#xff0c;满足了…

Vue 中 onclick和@click区别

文章目录 一、直接上结论二、验证代码&#xff0c;可直接运行三、点击结果 一、直接上结论 onclick 只能触发 js的原生方法&#xff0c;不能触发vue的封装方法click 只能触发vue的封装方法&#xff0c;不能触发js的原生方法 二、验证代码&#xff0c;可直接运行 <!DOCTYP…

11-树-二叉树的前序遍历

这是树的第11篇算法&#xff0c;力扣链接。 给你二叉树的根节点 root &#xff0c;返回它节点值的 前序 遍历。 示例 1&#xff1a; 输入&#xff1a;root [1,null,2,3] 输出&#xff1a;[1,2,3] 做了这么久的树问题&#xff0c;现在开始回忆三种遍历方法&#xff0c;这篇文章…

【嵌入式学习】IO进程线程day02.22

一、思维导图 二、习题 1> 将互斥机制的代码实现 #include <myhead.h>//定义一个全局变量 char str[128]"我是一个全局字符串数组"; //1、创建一个互斥锁变量 pthread_mutex_t mutex;//线程1 void *pth1(void *arg) {//上锁pthread_mutex_lock(&mutex…

为新固态硬盘安装操作系统

目录 背景方案具体步骤1 为新硬盘进行分区2 下载Dism3 下载win10的iso文件4 通过Dism 重装系统5 从biso调整启动顺序5 遗留问题 参考资料 背景 情况是这样的&#xff0c;我的电脑本来就有一块sata的固态硬盘&#xff0c;作为c盘&#xff0c;装载的是win10系统。 一方面只有500…