363.坐标系中的正方形数量
问题描述
小S在二维无限坐标系中作图,他可以使用两种操作来绘制直线:
- 选择一个整数
K并绘制一条无限水平线,方程为Y = K。 - 选择一个整数
K并绘制一条无限垂直线,方程为X = K。
不过小S有一个限制,他最多只能执行N次水平线操作和M次垂直线操作。
现在,你需要帮助小S计算在这些限制下,能够形成的单位长度为1的正方形的最大数量。一个正方形的边长为1个单位,并且位于由这些直线围成的区域内。
解题思路
1.计算水平线和垂直线的交点。 2.根据交点数量计算正方形的数量。
代码实现
public class Main {
public static int solution(int N, int M) {
int intersections = N*M;
int squares = (N-1)*(M-1);
return squares;
}
public static void main(String[] args) {
System.out.println(solution(2, 2) == 1);
System.out.println(solution(3, 3) == 4);
System.out.println(solution(1, 1) == 0);
}
}
反思:一开始直接return (N * (M - 1) + M * (N - 1)) / 4,结果报错。该公式并没有正确地计算出能够形成的单位长度为1的正方形的最大数量,实际上的正方形数量是由水平线和垂直线的交点决定的。
496.量化数字的统计
问题描述
小M最近对一种特别的数字产生了兴趣。他称某个数字为“量化数字”,当且仅当这个数字满足以下两个条件:
- 该数字能被
3整除。 - 该数字的所有位数都是相同的数字。
例如,数字
666是一个量化数字,因为它能被3整除,并且所有位数都是6。 现在给定两个整数L和R,你需要统计在L到R范围内(包括L和R)的所有量化数字,并返回这个数字的个数。
解题思路
-
遍历:使用循环从
L到R遍历每一个数字。 -
判断是否为量化数字:
检查数字是否能被 3 整除,使用取模运算 num % 3 == 0
检查数字的所有位数是否相同。
3. 判断所有位数是否相同:
将数字转换为字符串。 检查字符串中的每个字符是否与第一个字符相同。 4. 计数:如果一个数字满足上述两个条件,则将其计入结果。
总结
通过不断地练习和反思,可以更好地理解和掌握这些知识点。在学习过程中一定要保持耐心和坚持,多动手实践,多总结归纳。 为了提高学习效率,我制定了一个详细的刷题计划。即每天安排一定的时间进行练习3-5道题,逐步提高自己的解题能力。 通过这2道题的练习,我不仅加深了对java编程与算法的理解,还提高了解决问题的能力。希望在未来的学习中,我能继续提升自己的编程技能。