第四周 ARTS 打卡
1、Algorithm
找出数组中重复的数字。参考:https://blog.csdn.net/YouMing_Li/article/details/114226853
在一个长度为 n 的数组 nums 里的所有数字都在 0~n-1 的范围内。数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次。请找出数组中任意一个重复的数字。
限制:2 < = n < = 100000
解法一:建立一个新数组打卡标记所有数字都在 0 ~ n - 1 之间,所以可以建立一个长度为 n 的辅助数组 temp,将原数组中元素的数值作为 temp 数组的下标索引值进行计数,用来记录每个数字出现了多少次。遍历数组 temp,当前元素大于 1 的话,说明出现次数大于 1,即重复了,返回该元素的索引即可,因为索引对应的就是原数组中的元素值。
时间复杂度: 遍历数组 O(n)
空间复杂度: 开辟了大小为 n 的辅助数组 O(n)
解法二:移动元素让下标和值相对应将每个元素放到与下标对应的地方,如 2 应该放在 nums[2]的位置,如果下标 0 的位置是 2,则不满足 nums[0] = 0,而是应该将下标 0 处的元素 2 放到 nums[2]的位置,而如果经过比较发现 nums[2]的位置本身就是 2 了,说明 2 就是重复的数字。
时间复杂度: 遍历数组 O(n)
空间复杂度: 并未开辟额外空间 O(1)
解法三:将数组排序,判断相邻两个数是否相等
时间复杂度: 用到快速排序 O(nlogn)
解法四:利用 HashSet 记录,出现重复数字时立马返回结果即可
2、Review:
https://developer.android.google.cn/topic/performance/vitals/launch-time
官网介绍的关于应用启动时间的内容。首先介绍启动过程的内部机制。然后,讨论如何分析启动性能。最后,介绍一些常见的启动时间问题,并给出一些有关如何解决这些问题的提示。
3、Tips:
Android 在线源码网站推荐:
http://androidxref.com/。这个网站提供了从 Android 1.6 到 9.0 的源码,虽然源码版本比较老,但是查询搜索功能很齐全,如果想了解老版本的源码,这个网站是个不错的选择。
http://aospxref.com。这个网站提供了从 Android 7 到最新的 13 的源码,源码很新,但是过早的源码没有,可以结合其他的网站使用。但需要注意的是,网站页面布局不是很好看,浏览器可能没有完全适配,部分源码有遮挡现象。
https://www.androidos.net.cn/sourcecode。这个网站包含了 Android 和 Linux 内核的源码,地址是 https://www.androidos.net.cn/sourcecode。
https://cs.android.com/android/platform/superproject。这个网站包含了 Android 源码从 2.2 到 13 的内容,非常全面,而且很清晰,不仅可以查看 Android 源码,AndroidX、Kernel 等系列源码都可以查看。
https://android.googlesource.com/platform。这个网站包含了 Android 源码从 1.6 到 13 的内容,它是 Google Git,可以查看历史所有版本和修改记录,以及各个版本分支和 tag 是最新版的源码库。需要注意的是,这个网站需要梯子才能上去。
4、Share:
https://www.sohu.com/a/703586673_115128
10 倍效率的开发者即将消亡
这篇文章是作者对于 10 倍效率的开发者这一概念的批判和反思。作者认为,这种概念是基于错误的假设和测量方法,导致了一些不良的后果,比如过度依赖个人英雄主义,忽视团队合作,以及缺乏对软件质量和可维护性的关注。作者提出了一些替代的观点和建议,比如重视软件工程的原则和实践,培养团队的信任和协作,以及使用更合理的评估标准和工具。作者预测,随着软件行业的发展和变化,10 倍效率的开发者这一神话将会逐渐消失,取而代之的是更加专业和平衡的开发者。
版权声明: 本文为 InfoQ 作者【犇犇】的原创文章。
原文链接:【http://xie.infoq.cn/article/70360f906c46d0fa67326216b】。
本文遵守【CC-BY 4.0】协议,转载请保留原文出处及本版权声明。
评论