笔者自述:
一直有一个声音也一直能听到身边的大佬经常说,要把算法学习搞好,一定要重视平时的算法学习,虽然每天也在学算法,但是感觉自己一直在假装努力表面功夫骗了自己,没有规划好自己的算法学习和总结,因为后半年也该找实习了,所以每日的算法题要进行恶补,勤能补拙,因此有了这一个算法日记系列;
必读: 大佬你好,感谢您的阅读,这篇文章是我的算法笔记,方便我每日回顾;
为了不耽误您的时间,我把本篇日记的考点方向和算法知识总结列出来,如果对您有需要要就进行阅读
也希望对您有帮助,和您一起通关算法!致谢
算法语言:java
题目来源:力扣–书本–初级算法,可以在力扣中搜索相关题名找到更多解法和大神方法
本文知识点:
- 随机数
random.nextInt(j+1) 表示范围是从0-j - 交换两个数的值
交换两个数的值,使用异或操作,^= 效率更高,通过三次的异或操作,可以交换数组中的两个值,在不适用额外变量的情况下 - 筛选素数的方法:
埃拉托斯特尼筛法:从2开始,将每个素数的各个倍数,标记为合数,剩下的未标记的就是素数。 - 位运算
可以通过位运算和0、1相与的操作来判断该位上是否是1,>>> 表示无符号右位移,并且在最左边插入零, >> 表示有符号位移,他们两个的区别是 >>> 不考虑符号位,这样可以保证被移动数的为模式不变,不会因为符号位的扩展而改变其值,>>考虑符号位