ARTS 薪火重启之第二周
Algorithm
力扣中级题:15. 三数之和
描述:
给你一个整数数组 nums
,判断是否存在三元组 [nums[i], nums[j], nums[k]]
满足 i != j
、i != k
且 j != k
,同时还满足 nums[i] + nums[j] + nums[k] == 0
。请
你返回所有和为 0
且不重复的三元组。
注意:答案中不可以包含重复的三元组。
变量:
result[]: 结果数组
i: 遍历数组的下标。
l: 数组左边的指针。
r: 数组右边的指针。
解题思路:
・O(n 的二次方): 首先先将整数数组nums
进行排序。我使用的是 JS 里面的 sort()方法,这个时间复杂度应该是 Ologn。然后通过 for 循环遍历数组,通过计算数组下标的数值 nums[i],nums[l],nums[r]的和是否为 0 来将结果输入进 result 里。※因为提示里要求不能包含重复的三元组因此需要对结果进行过滤。过滤方法如下:对于变量 i:如果左边的数跟当前的 i 一样的话则跳过筛选,因为 i 是左边的的数的时候已经判断过了。对于变量 l: 在匹配成功后需要向右移动,如果右边的数据等于当前的 l 的数据的话则跳过这个数据,因为如果右边的数跟当前 l 一样的话会重复判断。变量 r 跟变量 l 同理,只不过是往左边遍历。
代码:
Review
文章链接:How To Ask Questions The Smart Way (catb.org)
大致内容:
做好准备工作:在你问问题之前,尽量自己找答案。搜索网站,查看 FAQ,阅读手册,以及检查相关的邮件列表档案。
选择合适的论坛:确保你在一个相关和适当的地方提问。例如,不要在一个关于 Linux 的论坛上问一个关于 Windows 的问题。
描述问题清晰、准确:给出你正在尝试达到的目标、所采取的步骤、你遇到的问题以及你的操作系统和软件版本。避免使用模糊的描述,如“它不工作”。
标题明确、具体:好的标题可以更快地吸引知道答案的人的注意。
礼貌并表现出尊重:没有人有义务回答你的问题。礼貌、感谢并尊重他人的时间会使你更容易得到帮助。
避免提出明显的问题:像“这是什么?”或“我可以从哪里得到这个?”这样的问题表现出你没有做足够的研究。
描述问题的症状,而不是你认为的原因:通常,描述问题的现象比告诉别人你认为问题出在哪更有用。
描述你已经尝试的解决方案:这可以避免别人建议你已经尝试过的方法。
在线等待回复并及时响应:如果有人回复并请求更多信息,尽快提供,这可以增加你获得有用答案的机会。
得到答案后,提供反馈:告诉别人哪个建议起作用了,或者如果你自己找到了答案,也分享出来。
心得:
我个人不是很喜欢提问,因为提问后等待回答需要很多时间。我一般会先通过使用 chatgpt 来寻找解决办法。如果遇到了时序限制的问题我会去项目的 github 查看 issue 或者去 stackoverflow 查看。
Tips
Docker 的容器化技术使用了 linux 里面的 cgroup 以及 namespace 这两个功能。通过 namespace 隔离进程,网络,挂载等。通过 cgroup 隔离进程所需要的资源。
Share
接着上一期ARTS薪火重启之第一周_算法_渣渣辉_InfoQ写作社区的回答,我认为现在市面上的 devops 的工具有很多,我们如果都要学习的话是很浪费时间以及未必能学好它,我这里推荐 azure devops 这个工具。首先这个是我的公司正在使用的技术,并且对于少人数来说的话它是免费的。建议考取 az-400 这个资格。对于学习 k8s 老实说我也不知很清楚,我准备先学习极客时间的 k8s 教程,学习结束后准备跟公司申请使用这个技术来加深理解。
评论