java中数组及数组元素的相关操作

数组及数组元素的相关操作

数组相关操作

  • [数组简介
  • 数组声明
  • 数组创建
  • 数组的类及相关方法

数组简介:

数组是一种重要的数据结构,在很多语言中都非常重要,并且像 栈,链表这些实现的
基础就是数组,更能看出数组的重要性。

数组的声明:

使用数组的前提就是声明数组变量:

	通用形式:	dataType[] arrayRefVar
	实际表现:	int[] nums; double[] myList; char[] ch;
				int[] nums = new int[10];
				char[] ch = new char[10];

数组的创建:

数组创建主要有两种形式:
	一,直接赋值
		通用形式:dataType[] arrayRefVar = {value0,value1,...,valuen};
		实际表现:int[] nums = {1,2,3,4,5};
				 char[] ch = {a,b,c,d,e};
	二,采用循环赋值
		采用for循环:for(int i=0; i<nums.length; i++)
						nums[i] = input.nextInt;
		(For - Each 循环多用于数组元素的处理中)

数组的类及相关方法:

Arrays 类
java.util.Arrays 类能方便地操作数组,它提供的所有方法都是静态的。

具有以下功能:

给数组赋值:通过 fill 方法。
对数组排序:通过 sort 方法,按升序。
比较数组:通过 equals 方法比较数组中元素值是否相等。
查找数组元素:通过 binarySearch 方法能对排序好的数组进行二分查找法操作。

数组元素相关操作

  • 实例一:删除数组排序数组中的重复项
  • 实例二:移除元素

实例一:删除数组排序数组中的重复项

题目简介:

给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。

不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。

示例 1:

给定数组 nums = [1,1,2], 

函数应该返回新的长度 2, 并且原数组 nums 的前两个元素被修改为 1, 2。 

你不需要考虑数组中超出新长度后面的元素。
示例 2:

给定 nums = [0,0,1,1,1,2,2,3,3,4],

函数应该返回新的长度 5, 并且原数组 nums 的前五个元素被修改为 0, 1, 2, 3, 4。

你不需要考虑数组中超出新长度后面的元素。

题目分析:

这种类型的题,有一个特征就是 满足一个不等关系

就本题而言:nums[i] !=nums[i+1]
遍历数组中所有元素,当出现这个不等关系时,将数组元素前移(也就是,nums[++count] = nums[i+1];)
最后返回的count 就是不重复元素的个数,以及需要打印的元素个数

代码展示(已验证):

//leetcode-java
class Solution {
    public int removeDuplicates(int[] nums) 
    {
    //	if(nums.length == 0)  用来判定数组是否为空,其实没必要,因为在下方程序中也会被发现
    //		return 0;
		int count =0;
		for(int i=0; i<nums.length-1; i++) //不同元素个数 count+1
			if(nums[i] != nums[i+1])
				nums[++count] = nums[i+1];	// 数据前移	
		return count+1;
    }
}

实例二:移除元素
题目简介:

	给定一个数组 nums 和一个值 val,你需要原地移除所有数值等于 val 的元素,返回移除后数组的新长度。

不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。

元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。

示例 1:

给定 nums = [3,2,2,3], val = 3,

函数应该返回新的长度 2, 并且 nums 中的前两个元素均为 2。

你不需要考虑数组中超出新长度后面的元素。
示例 2:

给定 nums = [0,1,2,2,3,0,4,2], val = 2,

函数应该返回新的长度 5, 并且 nums 中的前五个元素为 0, 1, 3, 0, 4。

注意这五个元素可为任意顺序。

你不需要考虑数组中超出新长度后面的元素。

题目分析:

其实这道题和上一道题是同一类型的,都有一个不等关系在里面
然后注意一下数据的前移就好了

代码展示(已验证):

// leetcode - java
class Solution {
    public int removeElement(int[] nums, int val) 
    {
        // if(nums.length == 0)
        //     return 0;
        int count=0;
		for(int i=0; i<nums.length; i++)
			if(nums[i] != val)
				nums[count++] = nums[i]; //元素新赋值给数组
			
		return count;
    }
}

泡泡:

从简单的数组下一步就会过渡到,ArrayList 类的运用中,有一些很方便的方法使用起来更舒服。

猜你喜欢

转载自blog.csdn.net/qq_42124842/article/details/91535288
今日推荐