小李的伴学笔记1 | 豆包MarsCode AI刷题

69 阅读3分钟

363.坐标系中的正方形数量

问题描述

小S在二维无限坐标系中作图,他可以使用两种操作来绘制直线:

  1. 选择一个整数K并绘制一条无限水平线,方程为 Y = K
  2. 选择一个整数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最近对一种特别的数字产生了兴趣。他称某个数字为“量化数字”,当且仅当这个数字满足以下两个条件:

  1. 该数字能被3整除。
  2. 该数字的所有位数都是相同的数字。 例如,数字666是一个量化数字,因为它能被3整除,并且所有位数都是6。 现在给定两个整数LR,你需要统计在LR范围内(包括LR)的所有量化数字,并返回这个数字的个数。

解题思路

  1. 遍历:使用循环从 L 到 R 遍历每一个数字。

  2. 判断是否为量化数字

检查数字是否能被 3 整除,使用取模运算 num % 3 == 0 检查数字的所有位数是否相同。 3. 判断所有位数是否相同

将数字转换为字符串。 检查字符串中的每个字符是否与第一个字符相同。 4. 计数:如果一个数字满足上述两个条件,则将其计入结果。

总结

通过不断地练习和反思,可以更好地理解和掌握这些知识点。在学习过程中一定要保持耐心和坚持,多动手实践,多总结归纳。 为了提高学习效率,我制定了一个详细的刷题计划。即每天安排一定的时间进行练习3-5道题,逐步提高自己的解题能力。 通过这2道题的练习,我不仅加深了对java编程与算法的理解,还提高了解决问题的能力。希望在未来的学习中,我能继续提升自己的编程技能。