数据结构之数组
2018-01-27 23:05
309 查看
数据结构之数组
引言:指针 和 临时变量 是解决数组问题的两大法宝。
1. 数组逆置(反转)
{1,2,3,4,5,6,7} ——> {7,6,5,4,3,2,1}
伪代码:
2. 数组旋转
{1,2,3,4,5,6,7} ——> {5,6,7, 1,2,3,4}
算法思想:
逆置前一部分,逆置后一部分,然后逆置整体。
3. 和为s的两个数字
输入:array={1, 3, 4, 5, 8, 9, 11},s = 13
输出: 4,9 |5,8
借助双指针,一次遍历数组实现,实现线性算法。
4. 和为s的连续正整数序列
输入:21
输出:1 2 3 4 5 6 | 6 7 8 | 10 11
思路:双指针,start从1开始,end从2开始
5. 删除数组重复元素
{1, 2, 2, 2, 3, 4, 5, 6, 6, 7, 7, 7, 8} ——>{1, 2, 3, 4, 5, 6, 7, 8, X, X, X}
借助临时变量实现线性算法
代码:
引言:指针 和 临时变量 是解决数组问题的两大法宝。
1. 数组逆置(反转)
{1,2,3,4,5,6,7} ——> {7,6,5,4,3,2,1}
伪代码:
i=0,j=n-1; while(i<j){ swap(array,i,j); i++; j--; }
2. 数组旋转
{1,2,3,4,5,6,7} ——> {5,6,7, 1,2,3,4}
算法思想:
逆置前一部分,逆置后一部分,然后逆置整体。
3. 和为s的两个数字
输入:array={1, 3, 4, 5, 8, 9, 11},s = 13
输出: 4,9 |5,8
借助双指针,一次遍历数组实现,实现线性算法。
i=0, j=array.length-1; while(i<j){ sum=array[i]+array[j]; if(sum==s){ printResult(); i++;j--; }else if(sum<s){ i++; }else j--; }
4. 和为s的连续正整数序列
输入:21
输出:1 2 3 4 5 6 | 6 7 8 | 10 11
思路:双指针,start从1开始,end从2开始
start=1,end=2; half=(s+1)/2; while(start<half){ sum=sum(start,end); if(sum==s){ printResult(); start++;end++; }else if(sum<s){ end++; }else start--; }
5. 删除数组重复元素
{1, 2, 2, 2, 3, 4, 5, 6, 6, 7, 7, 7, 8} ——>{1, 2, 3, 4, 5, 6, 7, 8, X, X, X}
借助临时变量实现线性算法
代码:
temp = array[0]; len = 1; for(int i=1;i<nums.length;i++){ if(temp==array[i]){ continue; }else{ temp = array[i]; array[len] = array[i]; len++; } }
相关文章推荐
- 数据结构(java语言描述)串与数组——稀疏矩阵的三元组表存储
- 面试---数据结构(2)(数组)
- 数据结构之数组、单链表和双链表的介绍
- 数据结构之数组
- Java之数据结构基础、线性表、栈和队列、数组和字符串,树—学习笔记
- [数据结构与算法] : 栈的数组实现
- 数据结构与算法-----队列-使用数组(顺序结构)实现
- php数组的数据结构
- 数据结构示例之顺序数组的实现
- (二)Android数据结构学习之数组
- 数据结构之数组篇
- 集合框架(数据结构之数组和链表)
- 数据结构之【数组和广义表】复习题
- 数据结构实验之数组一:矩阵转置
- 数据结构之后缀数组
- 数据结构实验之数组三:快速转置
- 数据结构之数组的增删改查-java实现
- [置顶] 一位数组返回id和pid通过这两个参数转换为树形结构数据,和树形结构的渲染
- 数据结构实验之数组三:快速转置
- 数据结构与算法--子数组和为0