Leetcode题解之数组

    • 一 完美的数组逆置算法
      • 整型数组的逆置算法
      • 合理利用泛型
      • 封装类型与基本类型的各自适用范围
    • 二 旋转数组Leetcode 189
    • 三 和为s的两个数字
    • 四 和为s的连续正整数序列
    • 五 删除排序数组中的重复元素leetcode26

一 完美的数组逆置算法

Leetcode题解之数组_第1张图片

1.整型数组的逆置算法

最简单的首尾互换:

Leetcode题解之数组_第2张图片

2.合理利用泛型

Leetcode题解之数组_第3张图片

3. 封装类型与基本类型的各自适用范围

Leetcode题解之数组_第4张图片

Leetcode题解之数组_第5张图片

二 旋转数组Leetcode 189

Leetcode 189. Rotate Array

三步反转法:

Leetcode题解之数组_第6张图片

三 和为s的两个数字

Leetcode题解之数组_第7张图片

Leetcode题解之数组_第8张图片

Leetcode题解之数组_第9张图片

Leetcode题解之数组_第10张图片


四 和为s的连续正整数序列

Leetcode题解之数组_第11张图片

思路:利用双指针start ,end;
当前s数列和为sum,如果当前 数列和小于s那么end++,如果大于s,那么start++,如果等于则输出start到end,当start=(s+1)/2时退出循环,因为此时start加到end肯定大于s。

Leetcode题解之数组_第12张图片
伪代码描述:

Leetcode题解之数组_第13张图片
示例代码:

Leetcode题解之数组_第14张图片

五 删除排序数组中的重复元素leetcode26

问题描述

Leetcode题解之数组_第15张图片

借助ArrayList解决问题

Leetcode题解之数组_第16张图片
时间空间复杂度都为O(n)
Leetcode题解之数组_第17张图片

直接覆盖解决问题

定义两个指针i=0,j=1从第一个之后跟前面元素对比,如果相同就跳过(j++),如果不同就直接让它排在(i++)的位置,然后再让更新的i的后面与i对比,直到j指针等于nums.length的时候退出。

Leetcode题解之数组_第18张图片
空间复杂度为0(1).

你可能感兴趣的:(数据结构与算法分析)