目录
前言
一、学习的内容
二、超时怎么办那就换种思路看题解
三、学习打卡成果展示
3.1 Github的小技巧
3.2 英文文章阅读
3.3 一篇很不错的Java面试题博客
四、学习技巧的总结
前言
关于 ARTS 的释义
● Algorithm: 每周至少做一个 LeetCode 的算法题
● Review: 阅读并点评至少一篇英文技术文章
● Tips: 学习至少一个技术技巧
● Share: 分享一篇有观点和思考的技术文章
一、学习的内容
为了满足活动需求,我这周特意干了以下事情:
1. 一道有关前缀后缀积的算法题
2. 一篇关于AIGC助力转型智慧图书馆的外文期刊
3. 发现了GitHub的一个很方便的小技巧
4. 分享一篇对于正在寻找实习的小伙伴一篇很不错的面试文章。
二、超时怎么办那就换种思路看题解
对于很久没刷算法的我来说,现在想要做出一道需要用到一点点小技巧的的题目我就没思路了,还得是要经常多动动脑子啊,平常还是要练一下算法囖。
就比如下面这道题目:
给你一个整数数组
nums
,返回 数组answer
,其中answer[i]
等于nums
中除nums[i]
之外其余各元素的乘积 。题目数据 保证 数组
nums
之中任意元素的全部前缀元素和后缀的乘积都在 32 位 整数范围内。请不要使用除法,且在
O(n)
时间复杂度内完成此题。
正常一般会想到的是直接两个套for循环,我第一思路就是这样,但是我也知道这样肯定对于某些案例肯定超时:但是先不管,先写了再说,源代码如下:
class Solution {public int[] productExceptSelf(int[] nums) {int sizes = nums.length;int answer [] = new int [sizes];for(int i=0;i<sizes;i++){answer[i] = 1;for(int j=0;j<sizes;j++){if(j!=i){answer[i] *= nums[j];}}};return answer;}
}
这样运行结果就是只能通过部分案例:如下图
不过这样还能通过80%的案例是我没想到的。然后就琢磨这么样才能让时间复杂度为O(n),惨了,想不出,那就看一下大家的题解hhh,才想起来要用前缀后缀积来写,是我太笨了。
大概的逻辑过程就是使用前缀积和后缀积,然后把前缀积和后缀积相乘。例程代码如下:
class Solution {public int[] productExceptSelf(int[] nums) {int sizes = nums.length;int answer [] = new int [sizes];int prew = 1, next = 1;for(int i=0;i<sizes;i++){answer[i] = 1;}for(int i=0;i<sizes;i++){answer[i]*=prew;prew*=nums[i];answer[sizes-1-i]*=next;next*=nums[sizes-1-i];};return answer;}
}
只可惜时间复杂度是O(2n),但是广义上来说也算是O(n);因此也能通过,上述代码执行过程如下:
假如 nums[] = {1,2,3,4};
i = 0: ans[0] = 1*1; prew = 1*1; ans[3] = 1*1; next = 1*4;
i = 1: ans[1] = 1*1*1; prew = 1*1*2; ans[2] = 1*1*4; next = 1*4*3
i = 2: ans[2] = 1*1*4*1*1*2; prew = 1*1*2*3; ans[1] = 1*1*1*1*4*3; next = 1*4*3*2
i = 3; ans[3] = 1*1*1*1*3*2; prew = 1*2*3*4; ans[0] = 1*1*1*4*3*2; next = 4*3*2*1
ans[0] = 1*1*1*4*3*2 = 24
ans[1] = 1*1*1*1*4*3 = 12
ans[2] = 1*1*4*1*1*2 = 8
ans[3] = 1*1*1*1*3*2 = 6
三、学习打卡成果展示
上述的题目也是可以通过了:
3.1 Github的小技巧
就是如果你有一个前端工程的话,你要是想能随时看到页面的渲染效果,但是又不想部署在服务器上,那你可以新建一个仓库,仓库命名要为.github.io结尾才可以,这样你就可以将build之后的生成的dist目录下的assets目录放到仓库里面去,那么你访问这个仓库的时候,会直接给你渲染这个工程的效果。
就比如我之前为了给同学送生日红包写的一个抽金额的案例:直接点击仓库的网址就可以使用了。非常方便!(背景图片就不要在意了哈,因为根据她的爱好来给她设置的哈哈哈
抽金额https://longstudy1.github.io/vuetest.github.io/
3.2 英文文章阅读
因为AIGC目前比较火热,所以我也找了一篇关于AIGC相关的英文文章来看,链接如下:
Smart Library Transformation Research Empowered by AIGC Technology | Francis Academic PressFrancis Academic Press is one of the world’s largest publishers of peer-reviewed, fully Open Access journals. Built on an ethos of openness, we are passionate about working with the global academic community to promote open scholarly research to the world. With the help of our academic Editors, based in institutions around the globe, we are able to focus on serving our authors while preserving robust publishing standards and editorial integrity.https://francis-press.com/papers/10935
这篇文章主要讲的是AIGC助力图书馆转型为智能图书馆的举措和思路,旨在通过人工智能和图形计算方面的技术将图书馆实现流程自动化,增强用户体验, 提高图书使用效率和增强用户使用体验。
文中也列举了一个例子,重庆的Raffles图书馆就是一座新型的智能图书馆,采用了AR和VR等尖端技术,图书馆使用AIGC来实现图书推荐,并能根据用户行为和偏爱来进行实时建议。这也是一个是非常棒的实践。侧面说明了AIGC的大有作为,还是非常值得我们期待的。希望能运用到更多的行业里面,带给我们更多的惊喜。
3.3 一篇很不错的Java面试题博客
这篇博客我们感觉讲到的面试题都非常常见且全面,我日常也会看,可能有些知识点我们目前还没有学过,但是我觉得我们还是很有必要看一下的。
Java 面试必会(应届必备)_java工作面试_书启秋枫的博客-CSDN博客代理模式。_java工作面试https://blog.csdn.net/qq_45037155/article/details/128560597?spm=1001.2014.3001.5506
四、学习技巧的总结
通过这一周的学习,感觉面试题还是得天天看,八股文还是得看,还要算法题也是要每周最少做一道才行,不然脑子总是不好使了。然后有时间的话也可以看一些外文期刊,不仅可以提高一下我们的见识,同时也是训练我们的英语水平。总的来说还是非常nice。