数组及数组元素的相关操作
数组相关操作
- [数组简介
- 数组声明
- 数组创建
- 数组的类及相关方法
数组简介:
数组是一种重要的数据结构,在很多语言中都非常重要,并且像 栈,链表这些实现的
基础就是数组,更能看出数组的重要性。
数组的声明:
使用数组的前提就是声明数组变量:
通用形式: 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 类的运用中,有一些很方便的方法使用起来更舒服。