#青训营笔记创作活动# 问题描述
小F被神秘力量带入了一个魔幻世界,这里危机四伏。为了在异世界中生存,小F需要找到安全区。异世界可以被表示为一个大小为n x m的二维数组,每个格子的值代表该位置的危险程度。
小F的能力值为X,当某个格子的危险程度小于等于X时,这个格子是安全的。如果多个安全的格子相邻(上下左右连通),它们可以构成一个安全区。你需要帮助小F计算出一共有多少个安全区。
测试样例
样例1:
输入:n = 3, m = 3, X = 4, a = [[2, 3, 3], [3, 3, 3], [3, 3, 3]]
输出:1
样例2:
输入:n = 2, m = 2, X = 5, a = [[6, 6], [6, 4]]
输出:1
样例3:
输入:n = 3, m = 3, X = 3, a = [[1, 2, 2], [2, 3, 3], [3, 4, 5]]
输出:1
题解:
一个原二维数组,新建一个visited数组记录是否经过,直接全部遍历,遇到安全值小于能力值且没经过的点就进入while循环。while循环通过队列实现安全区域的搜寻,通过maxnum记录安全区域的个数。
#青训营笔记创作活动#
2023/2/10 打卡 day10
优秀后端都应该具备的开发好习惯
1.注释尽可能全面,写有意义的方法注释
对于接口方法的注释,应该包含详细的入参和结果说明,有异常抛出的情况也要详细叙述;类的注释应该包含类的功能说明、作者和修改者。;如果是业务逻辑很复杂的代码,真的非常有必要写清楚注释。
2.项目拆分合理的目录结构
如果服务过多,应该根据不同的业务进行划分,比如订单、登陆、积分等等。也可以根据不同的业务划分模块,比如建一个moudles包,然后按订单、登陆等业务划分,每个业务都有自己的controller、service、mapper、entity。
3. 不在循环里远程调用、或者数据库操作,优先考虑批量进行。远程操作或者数据库操作都是比较耗网络、IO资源的,所以尽量不在循环里远程调用、不在循环里操作数据库,能批量一次性查回来尽量不要循环多次去查。
4. 封装方法形参
如果你的方法参数过多,要封装一个对象出来。
5. 封装通用模板
6. 封装复杂的逻辑判断条件
7. 保持优化性能的嗅觉
比如避免创建非必要的对象、异步处理、使用缓冲流,减少IO操作等等。
8. 可变参数的配置化处理
比如用户多少天没登录注销、运营活动,不同节日红包皮肤切换、订单多久没付款就删除等等。对于这些可变的参数,不用该直接写死在代码。优秀的后端,要做配置化处理,你可以把这些可变参数,放到数据库一个配置表里面,也可以放到项目的配置文件或者apollo上。
9. 会总结并使用工具类。
我们既要会用工具类,更要学会自己去总结工具类。比如去文件处理工具类、日期处理工具类等等
10. 控制方法函数复杂度
你的方法不要写得太复杂,逻辑不要混乱,也不要太长。一个函数不能超过80行。写代码不仅仅是能跑就行,而是为了以后更好的维护。
11. 在finally块中对资源进行释放
12.把日志打印好
一般情况,方法入参、出参需要打印日志,异常的时候,也要打印日志等等
13. 考虑异常,处理好异常
14. 考虑系统、接口的兼容性
15. 代码采取措施避免运行时错误
优秀的后端开发,应该在编写代码阶段,就采取措施,避免运行时错误,如数组边界溢出,被零整除,空指针等运行时错误。
2023/2/10 打卡 day10
优秀后端都应该具备的开发好习惯
1.注释尽可能全面,写有意义的方法注释
对于接口方法的注释,应该包含详细的入参和结果说明,有异常抛出的情况也要详细叙述;类的注释应该包含类的功能说明、作者和修改者。;如果是业务逻辑很复杂的代码,真的非常有必要写清楚注释。
2.项目拆分合理的目录结构
如果服务过多,应该根据不同的业务进行划分,比如订单、登陆、积分等等。也可以根据不同的业务划分模块,比如建一个moudles包,然后按订单、登陆等业务划分,每个业务都有自己的controller、service、mapper、entity。
3. 不在循环里远程调用、或者数据库操作,优先考虑批量进行。远程操作或者数据库操作都是比较耗网络、IO资源的,所以尽量不在循环里远程调用、不在循环里操作数据库,能批量一次性查回来尽量不要循环多次去查。
4. 封装方法形参
如果你的方法参数过多,要封装一个对象出来。
5. 封装通用模板
6. 封装复杂的逻辑判断条件
7. 保持优化性能的嗅觉
比如避免创建非必要的对象、异步处理、使用缓冲流,减少IO操作等等。
8. 可变参数的配置化处理
比如用户多少天没登录注销、运营活动,不同节日红包皮肤切换、订单多久没付款就删除等等。对于这些可变的参数,不用该直接写死在代码。优秀的后端,要做配置化处理,你可以把这些可变参数,放到数据库一个配置表里面,也可以放到项目的配置文件或者apollo上。
9. 会总结并使用工具类。
我们既要会用工具类,更要学会自己去总结工具类。比如去文件处理工具类、日期处理工具类等等
10. 控制方法函数复杂度
你的方法不要写得太复杂,逻辑不要混乱,也不要太长。一个函数不能超过80行。写代码不仅仅是能跑就行,而是为了以后更好的维护。
11. 在finally块中对资源进行释放
12.把日志打印好
一般情况,方法入参、出参需要打印日志,异常的时候,也要打印日志等等
13. 考虑异常,处理好异常
14. 考虑系统、接口的兼容性
15. 代码采取措施避免运行时错误
优秀的后端开发,应该在编写代码阶段,就采取措施,避免运行时错误,如数组边界溢出,被零整除,空指针等运行时错误。
展开
评论
点赞