2.4 数组

数组是什么

数组是数据结构中的最基本结构,几乎所有的程序设计语言都把数组类型设定为固定的基础变量类型。我们可以把数组理解为一种容器,它可以用来存放若干个相同类型的数据元素。

  • 存放的数据是整数型的数组,称作整型数组
  • 存放的数据是字符型的数组,则称作字符数组
  • 另外还有一类数组比较特殊,它是数组的数组,也可以叫作二维数组

数组在内存中是连续存放的,数组内的数据,可以通过索引值直接取出得到。

例题

​ 给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后的数组和新的长度,你不需要考虑数组中超出新长度后面的元素。要求,空间复杂度为 O(1),即不要使用额外的数组空间。

​ 例如,给定数组 nums = [1,1,2],函数应该返回新的长度 2,并且原数组 nums 的前两个元素被修改为 1, 2。 又如,给定 nums = [0,0,1,1,1,2,2,3,3,4],函数应该返回新的长度 5,并且原数组 nums 的前五个元素被修改为 0, 1, 2, 3, 4。

解:核心思路:1.缓存 当前最大的值、数组的长度 2.遍历数组 将比当前最大值大的数据 添加到相应的位置,同时长度加1

public class ArrayTest {

	public static void main(String[] args) {
		int nums[] = { 0, 0, 1, 1, 1, 2, 2, 3, 3, 4 };

		removeRepeat(nums);

	}

	/**
	 * 去除重复的
	 * @param nums 从小到大的排序数组
	 */
	private static void removeRepeat(int[] nums) {
		int max = nums[0];
		int len = 1;
		for (int i = 1; i < nums.length; i++) {
			if (max < nums[i]) {
				max = nums[i];
				nums[len] = max;
				len++;
			}
		}

		System.out.println("长度:" + len);
		for (int i = 0; i < len; i++) {
			System.out.print(nums[i]+"  ");
		}

	}

}

posted @ 2020-10-23 15:57  Nixon  阅读(83)  评论(0编辑  收藏  举报