A
23. 移动零
代码语言:javascript复制/**
* [23. 移动零](https://leetcode-cn.com/problems/move-zeroes/)
* 给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。
* 输入: [0,1,0,3,12]
* 输出: [1,3,12,0,0]
* 解释:将0移到最后,其余数字顺序不许改变。要在原数组上操作。
* 1.统计0的个数,两个循环。
* 2.双指针。从头遍历到尾。非0就放在前面。
*/
public class Solution {
public void moveZeroes(int[] nums) {
// i从前往后,所有数都遍历1遍。j记录非0数放置位置。
for (int i = 0, j = 0; i < nums.length; i )
if (nums[i] != 0)
// i 与 j索引上的值交换,且j自增
nums[i] = nums[i] ^ nums[j] ^ (nums[j ] = nums[i]);
}
}
R
6 Habits of Super Learners
超级学习者的6大习惯
好的学习方法会使学习更加愉快。
1.读了很多书
超级学习者啥都懂,上知天文地理,下知小道情报。
读得越多,脑子越活。
学习不是苦差,是改善生活。(无知是一切痛苦之源 - 尼采)
埃隆马斯克一天两本书。比尔盖茨一年五百本。扎克伯格两周一本。沃伦巴菲特每天5份报纸和500页企业报告。
信息时代,情报最重要。
2.学习是过程
学习不是目的,是过程。
学习是人生享受,自我主导,自我规划。
学习需要观察力与好奇心。
学习是投资。
学习是不断完善,持续精进。
3.成长心态
人是成长的,需要不断学习。
4.超级学习者教别人
教别人可以记住知识的90%。
通过叫别人学习,能快速发现学习漏洞。- 费曼学习法
在费曼的传记中,费曼能够用简单的语言阐述复杂的物理定理。
最佳学习模型是50%时间学,50%时间教。
5.高效学习者爱护大脑
水果蔬菜坚果鱼肉橄榄油(其实就是地中海饮食)
高GI食物很容易犯困
6.他们会休息
研究表明,经常短暂的休息,能够更好的记住你要学的东西。
不是不停地学练学练学练,而是学、休息、学、休息。
更好的休息能巩固知识。
大脑一次性能获取40个知识点,再多就负载了。
大脑需要时间处理信息,所以间隔学习更有效。
T
Leetcode刷题技巧:
1.直接看答案,分析所有解法及各自时间复杂度
2.看完默写最优解,之后看国内国际版不断优化。
3.每道题目刷5遍。
S
无关技术,关于学习的思考。
- 学习前先“入定”,冥想放空一段时间,把情绪放下,再学习。
- 学习环境,如果是晚上,只开桌子的灯,房间的灯关闭。
- 快速学习,关注内容的框架。
- 学不懂没关系,先放着,复习的时候再看。
- 28法则,只学习其中你认为有用的20%的内容。其余80%内容不要去关注。
- 学习新内容累了,就复习之前的笔记,不断将笔记缩减,字越少越好。
- 做笔记不要复制粘贴。用自己的话表述记录下来,要精简。
- 做可视化的思维导图辅助记忆,回顾知识点。
- 重要记不住的内容可以打印整理出来。
- 学习最重要的是记住有用的东西。要把知识记录脑中。能够说出来。
- 笔记要清晰整洁易读。多配图。