
算法
说说互联网的那些事
毕业于中山大学,从事互联网电商多年,有着丰富的经验,平时擅长总结互联网技术,分享大厂的面试经验,微信公众号:说说互联网的那些事
展开
-
数据结构--ArrayList12 求主元素
1)题目:已知一个整数序列A=(a0,a1...an),其中0<=ai<n(0<=i<n),若存在ap1=ap2.....=apm=x,且m>n/2(0<=pk<n,1<=k<m),则称x为A的主元素,例如A=(0,5,5,3,5,7,5,5),则5为主元素;又如A=(0,5,5,3,5,1,5,7),则A中没有主元素,假设A中的n个元素存在一...原创 2019-05-01 17:56:52 · 547 阅读 · 0 评论 -
数据结构--ArrayList13 求数组中未出现的最小正整数
1)题目:给定一个含n(n>=1)个整数的数组,请设计一个在时间上尽可能高效的算法,找出数组中未出现的最小正整数。例如,数组{-5,3,2,3}中未出现的最小正整数是1;数组{1,2,3}中未出现的最小正整数是42)思路与代码:源码中使用到的ArrrayList,是调用的是自己实现的ArrayList,自己实现的ArrayList源码地址:https://blog.youkuaiyun.com/...原创 2019-05-02 16:41:18 · 1052 阅读 · 0 评论 -
数据结构--ArrayList01删除最小元素
1)题目:从顺序表中删除具有最小值的元素(假设唯一),并由函数返回被删元素的值,空出的位置由最后一个元素填补,若顺序表为空,则显示出错信息并退出运行。2)基本思路:该顺序表不是有序的顺序表,我们需要找出最小的元素以及这个元素的位置,所以通过从头到尾依次遍历的方式,找到最小的元素和最小元素的位置;然后用顺序表的最后一个元素替换该最小值元素。3)代码:源码中使用到的ArrrayList,是...原创 2019-04-28 18:29:38 · 730 阅读 · 0 评论 -
数据结构--ArrayList07 合并两个有序顺序表为一个有序顺序表
1)题目:将两个有序顺序表合并为一个新的有序顺序表,并由函数返回结果顺序表2)思路:listA,listB合并成listAB;len(listAB)=len(listA)+len(listB);同时从头到尾依次遍历listA和listB,假如listA[i]<listB[j],将listA[i]加入listAB中,i=i+1,j=j;假如listA[i]>listB[j],将lis...原创 2019-04-29 17:41:01 · 1209 阅读 · 0 评论 -
数据结构--ArrayList08 互换数组A中两个线性表的位置
1)题目:已知在一维数组A[m+n]中依次存放两个线性表(a1,a2,a3....am)和(b1,b2,b3....bn),试编写一个函数,将数组两个顺序表位置互换,即将(b1,b2,b3....bn)放在(a1,a2,a3....am)前面。2)思路:先整体翻转,然后两个线性表再分别翻转。空间复杂度是O(1)3)代码:源码中使用到的ArrrayList,是调用的是自己实现的Array...原创 2019-04-30 08:10:21 · 475 阅读 · 0 评论 -
数据结构--ArrayList09 用最小的时间在顺序表中寻找X值
1)题目:线性表(a1,a2,a3....an)中的元素递增有序且按顺序存储于计算机内,要求设计一算法,完成用最小时间在表中查找数值为x的元素,若找到则将其与后续元素位置交换,若找不到则将其查入表中并使表表中元素仍然有序递增。2)思路:从头到尾依次遍历,如果找到x,则跟其后面的元素互换位置;如果找不到,则将其插入有序表中。3)代码:源码中使用到的ArrrayList,是调用的是自己实现...原创 2019-04-30 08:34:39 · 362 阅读 · 0 评论 -
数据结构--ArrayList10 循环左移顺序表的元素
1)题目:设将n(n>1)个整数存放到一维数组R中,设计一个在时间和空间两方面都尽可能高效的算法。将R中保存的序列循环左移p(0<p<n)个位置,即将R中的数据由(X0,X1......Xn-1)变换成(Xp,Xp+1,......Xn-1,X0,X1......Xp-1)。2)思路:1、将第一个数据存储到一个临时变量上; 2、将每个已经被复制过的数据的...原创 2019-04-30 17:39:04 · 400 阅读 · 0 评论 -
数据结构--ArrayList11 求中位数
1)题目:一个长度为L(L>=1)的升序序列S,处在第[L/2]位置的数称为S的中位数,例如,若序列S1=(11,13,15,17,19),则S1的中位数是15,两个序列的中位数是含他们所有元素的升序序列的中位数。例如,若S2=(2,4,6,8,20),则S1和S2的中位数是11,现在有两个等长升序序列A和B,设计一个在时间和空间复杂度尽可能高效的算法,找出A和B的中位数。2)思路与代码...原创 2019-05-01 13:01:46 · 897 阅读 · 0 评论