23. 移动零
/**
* [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]);
}
}
超级学习者的6大习惯
好的学习方法会使学习更加愉快。
1.读了很多书
超级学习者啥都懂,上知天文地理,下知小道情报。
读得越多,脑子越活。
学习不是苦差,是改善生活。(无知是一切痛苦之源 - 尼采)
埃隆马斯克一天两本书。比尔盖茨一年五百本。扎克伯格两周一本。沃伦巴菲特每天5份报纸和500页企业报告。
信息时代,情报最重要。
2.学习是过程
学习不是目的,是过程。
学习是人生享受,自我主导,自我规划。
学习需要观察力与好奇心。
学习是投资。
学习是不断完善,持续精进。
3.成长心态
人是成长的,需要不断学习。
4.超级学习者教别人
教别人可以记住知识的90%。
通过叫别人学习,能快速发现学习漏洞。- 费曼学习法
在费曼的传记中,费曼能够用简单的语言阐述复杂的物理定理。
最佳学习模型是50%时间学,50%时间教。
5.高效学习者爱护大脑
水果蔬菜坚果鱼肉橄榄油(其实就是地中海饮食)
高GI食物很容易犯困
6.他们会休息
研究表明,经常短暂的休息,能够更好的记住你要学的东西。
不是不停地学练学练学练,而是学、休息、学、休息。
更好的休息能巩固知识。
大脑一次性能获取40个知识点,再多就负载了。
大脑需要时间处理信息,所以间隔学习更有效。
Leetcode刷题技巧:
1.直接看答案,分析所有解法及各自时间复杂度
2.看完默写最优解,之后看国内国际版不断优化。
3.每道题目刷5遍。
无关技术,关于学习的思考。