给你一个有序整数数组,数组中的数可以是正数、负数、零,请实现一个函数,这个函数返回一个整数:返回这个数组所有数的平方值中有多少种不同的取值。
举例:
- nums = {-1,1,1,1} 你应该返回1,因为这个数组所有数的平方取值都是1,只有一种取值
- nums = {-1,0,1,2,3} 你应该返回4,因为nums数组所有元素的平方值一共4种取值:1,0,4,9
题目分析:
求平方值,那么只要绝对值相等即平方相等
一、使用额外空间
即使用HashSet的自动去重功能,将各个数的平方值放入其中,最后返回其存储数据的长度即得结果。
代码实现:
public int Handle(int[] nums){ if (nums.length == 0 || nums == null) return 0; HashSet<Integer> hashSet = new HashSet<>(); for (int n : nums) { hashSet.add