(1.2.4.1)数组的相关算法
来源:互联网 发布:自制印章软件 编辑:程序博客网 时间:2024/05/21 14:46
- 1-递归实现数组求和
- 2-一个变量二维数组
- 3-递归判断数组递增
- 4-排序数组中查找指定元素重复出现次数
- 5-无序数组的交集
- 6-有序数组的交集
- 7-重复次数最多的元素
- 8-On时间复杂度中寻找数组中出现一半以上的数
- 9-求解存放连续数的数组的唯一重复元素时间复杂度On
- 10-出现奇数次的元素
- 11-数组中符合条件的数组对个数
- 12-数组验证有无重复元素
- 13-使得数组左边全为奇数右边为偶数
- 14-数组去重
- 15-求第二大数
- 16-求最大最小数
- 17-后M个数移动到前M
- 18-寻找只出现一次的元素
- 19-判断一个整数X是否可以表示nn2个连续正整数的和
1-递归实现数组求和
int getsum(int *a,int n){ if(n==0) return 0; else{ getsum(a,n-1)+a[n-1]; }}
2-一个变量二维数组
#define MAXX=2#define MAXY=3void print(){int array[MAXX][MAXY]={1,2,3,4,5,6};for(int i=0;i<MAXX*MAXY;i++){printf("d%/n",array[i/MAXX][i%MAXY]);//i/maxx实现外层大循环,i%maxy实现内存小循环}}
3-递归判断数组递增
int isIncrese(int a[],int n){if(n==1) return 1; else return a[n]>a[n-1]&&isIncrease(a,n-1);}
4-排序数组中查找指定元素重复出现次数
示例:{1,2,2,2,3}数组中2出现3次
- 解法1. 顺序查找,找到第一个指定元素位置,开始记录i,出现一次i++,到出现不一样元素时,输出i
- 解法2.二分查找,分别查找该元素出现的第一个位置,在查找出现的最后一个位置,相减求出重复次数
5-无序数组的交集
- 使用hashset,判断是否重复,或者hashmap
- 分别转化为有序数组,针对有序数组进行交集分析
- 位图法
- 野蛮分析法 每一个元素分别判断,n*m
6-有序数组的交集
- 两数组的长度基本一致
- hashmap
- 遍历一个建立hashset,遍历另一个判断是否冲突
- 仿照有序链表的合并
- 两数组的长度悬殊很大
- 遍历长度小的数组,将得到的元素在长数组中进行二分\分块查找
7-重复次数最多的元素
- 位图法
- hashmap
8-O(n)时间复杂度中,寻找数组中出现一半以上的数
- hashmap
- 编程之美,水王问题,,,每次取出两个不同的数,剩下元素中水王仍然超过一半。
- 不断取出不同的的数,剩下的就是水王
- count变量,是+1,否-1
9-求解存放连续数的数组的唯一重复元素,时间复杂度O(n)
- 允许辅助空间——位图法
- 无辅助空间——数组中存放1~n-1: 数组求和-[1,2,,,n-1]的和相减,即为所求元素
10-出现奇数次的元素
- 位图法
- 如果只有一个基数次元素:可使用异或法 k^k=0 k^0=k,,对数组内所有元素集体进行异或
11-数组中符合条件的数组对个数
一个整数数组,元素取值为1~n-1,元素不会重复,查找数对个数,满足a+b=n+1
- 蛮力法 n*m
- 数组排序+二分查找
- a[s]+a[end]>n+1; 则end–
- a[s]+a[end]=n+1 则s++.end–
- a[s]+a[end]
12-数组验证有无重复元素
- 位图法
- 排序+两两比较
- hashset
- hashmap
13-使得数组,左边全为奇数,右边为偶数
快速排序的变形
14-数组去重
- 蛮力法 n*m
- 快速排序+再遍历去重
- 下标数组法
15-求第二大数
两个变量,max,secondMAX
16-求最大最小数
- 两次遍历 比较次数2N
- 一次遍历,每次取一个,1:2比较,比较次数2N
- 一次遍历,每次取两,2:2,比较次数1.5n
- 分治法
17-后M个数移动到前M
类似字符串的移位
18-寻找只出现一次的元素
异或法
19-判断一个整数X是否可以表示n(n>2)个连续正整数的和
X=m+(M+1)+(m+2)+,,,(m+n-1);
X=(2m+n-1)*n/2;
m=(2*x/n-n+1)/2;
问题转化为M是否存在,也就是(2*x/n-n+1)/2是否是偶数
0 0
- (1.2.4.1)数组的相关算法
- 两个有序数组相关的算法
- 数组与字符串相关的算法
- 与数组相关算法
- 数组相关算法
- 数组求和相关算法
- “异或”处理数组的相关算法的面试题
- 【算法总结--数组相关】双指针法的常见应用。
- 【算法总结--数组相关】双指针法的常见应用。
- 【算法总结--数组相关】双指针法的常见应用。
- 算法总结--数组相关】双指针法的常见应用
- 【学习记录】5.2 数组相关的基本算法
- 几个数组相关算法代码
- 基础算法题-数组相关
- 【算法总结-数组相关】 数组中找特定元素相关~
- 【算法总结-数组相关】 数组中找特定元素相关~
- 数组的相关操作
- 数组相关的指针
- 【猿必读】代码飞起。
- 前四章课堂测试
- it need flush out the previous h264 stream data
- 阿里巴巴校招实习 java 研发 123面
- 泛微签约广东特地陶瓷有限公司
- (1.2.4.1)数组的相关算法
- android 引用第三方库
- struct stat结构体的详解和用法
- iOS学习之 plist文件的读写
- 二手房的新生 100平冬季温暖窝
- 消息队列通讯编程
- android自定义相机,解决预览扭曲,隐藏setParameters failed
- 【Android培训-手机软件开发】面向对象(5)
- linux文件权限