反转之后不同整数的数目
难度:
标签:
题目描述
代码结果
运行时间: 153 ms, 内存: 41.8 MB
/*
* 思路:
* 1. 使用Java Stream API遍历原数组,将原数字和反转后的数字都加入到流中。
* 2. 使用Collectors.toSet()来收集所有不同的数字。
* 3. 返回集合的大小。
*/
import java.util.Arrays;
import java.util.Set;
import java.util.stream.Collectors;
public class Solution {
public int countDistinctIntegers(int[] nums) {
Set<Integer> set = Arrays.stream(nums)
.boxed() // 将int流转换为Integer流
.flatMap(num -> Arrays.stream(new Integer[]{num, reverseNumber(num)}))
.collect(Collectors.toSet());
return set.size();
}
// 反转数字的辅助函数
private int reverseNumber(int num) {
int reversed = 0;
while (num > 0) {
reversed = reversed * 10 + num % 10;
num /= 10;
}
return reversed;
}
}
解释
方法:
该题解采用了直接的方法来解决问题。首先,遍历数组 nums 中的每个整数,将其转换为字符串,然后反转字符串,并将反转后的字符串再转换回整数。这些反转后的整数被添加到原始数组 nums 的末尾。利用 Python 的 set 数据结构,可以自动过滤掉重复的元素,因此最后返回 set(nums) 的长度即可得到不同整数的数目。
时间复杂度:
O(n)
空间复杂度:
O(n)
代码细节讲解
🦆
题解中提到将反转后的整数添加到原始数组的末尾,这种操作是否会影响遍历过程中的数字反转?
▷🦆
在反转数字并转换为整数时,如何处理数字前导0的情况,比如将10反转为01后转换成整数1,在代码实现上有特殊处理吗?
▷🦆
题解中使用了set来去除重复元素,set的内部机制在处理大量数据时的效率如何?是否存在性能瓶颈?
▷🦆
题解中如果数组nums非常大,这种方法的扩展性如何?是否有更高效的方法来处理大数据量的情况?
▷