# 找单独的数题目总结
HashMap<Integer, Integer> countMap = new HashMap<>(); HashMap是java中的一个集合类,用于存储键值对,<Integer, Integer>是泛型参数,指定键和值都是integer类型,这个代码就是创建了一个名为countMap的哈希表,键和值都是Interger类型;
增强for循环:for(元素类型 变量名 :数组或集合){ } 工作原理 初始化:循环开始时,num 被初始化为数组 inp 的第一个元素。 循环体执行:每次循环,num 的值都会被更新为数组 inp 中的下一个元素。 循环体中的代码会被执行,直到数组中的所有元素都被遍历完。 结束:当数组中的所有元素都被遍历完后,循环结束。
containsKey(num):这是 HashMap 类的方法,用于检查 countMap 中是否包含键 num。如果包含,返回 true;否则,返回 false countMap.get(num) 获取 num 在 countMap 中的当前计数。 entry 是一个 Map.Entry 对象,表示当前遍历到的键值对。Map.Entry<Integer, Integer> 是一个表示键值对的接口 entrySet() 方法返回 countMap 中所有键值对的集合 通过这个循环,你可以遍历 countMap 中的每一个键值对,并对其进行处理
这个算法的时间复杂度为O(n)
完美整数 问题描述 一个整数如果由相同的数字构成,则称为完美整数。
解题思路
遍历区间:我们需要遍历从 x 到 y 的所有整数。
检查每个整数:对于每个整数,我们需要检查它是否由相同的数字构成。
判断是否为完美整数:
- 将整数转换为字符串。
- 检查字符串中的所有字符是否相同。
计数:如果一个整数是完美整数,则计数加一。
先定义一个计数器(计数器思想),然后一个for循环,先将数字转换为字符串,String strNum = String.valueOf(num);定义一个标志来判断完美整数
charAt(0) 方法返回字符串中索引为 0 的字符,也就是第一个字符,再遍历字符串中的每个字符,如果字符串中的第一个字符与有的字符不同就让isPerfect变为false,如果遍历完成以后isPerfect还是true 就让计数器加一; 最后返回计数器的值 整个题目的方法: public static int solution(int x, int y) { // 首先,遍历区间 [x, y] 中的每个整数 int count=0; for (int num = x; num <= y; num++) { // 将整数转换为字符串,以便处理每个数字 String strNum = String.valueOf(num); // 定义一个标志来判断是否为完美整数 boolean isPerfect = true; // 取出第一个数字 char firstChar = strNum.charAt(0); // 遍历字符串中的每个字符 for (int i = 1; i < strNum.length(); i++) { // 如果有字符与第一个字符不同,设置标志为 false 并退出循环 if (strNum.charAt(i)!= firstChar) { isPerfect = false; break; } } // 如果标志为 true,说明是完美整数,计数加 1 if (isPerfect) { count++; } } // 返回计数结果 return count; }