您的位置:首页 > 理论基础 > 数据结构算法

数据结构之数组

2018-01-27 23:05 309 查看
数据结构之数组

引言:指针临时变量 是解决数组问题的两大法宝。

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++;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: