Algorithm
本周算法:136.只出现一次的数字
这次算法题因为受第一周算法的影响,以及它的题目描述中的“你可以不使用额外空间来实现吗?”,于是我就采用了排序加循环比较的方式。
我的题解思路:首先,先让数组进行排序,排序完后,进行循环比较,在每次循环开始前,我会设置一个值为false的Boolean标记,从索引0开始,将相邻的两个数同中间的一个数比较,如果相同将标记置为false,如果不同将标记置为true。在单次循环的最后判断标记,如果为true,则为答案,如果为false则继续循环。在这里要注意两个临界值,首先是索引0的左边界值,及索引为length - 1的右边界值。
Review
本周阅读文章:“The Key To Accelerating Your Coding Skills”
这篇文章主要讲述了,在学习编程的过程中,如果去快速的通过自己编程的拐点,通过这个拐点之后,自身的变成技能将会得到质的提升,但是在这个阶段时,会经历很多让你觉得很艰难的事情,甚至让你想放弃,但只要坚持下来,就一定可以通过的。
Tip
受本周算法的影响,我发现了二进制数真的很神奇,我自己的题解耗时9ms,但是使用二进制的异或运算竟然仅仅花费1ms。但是细想,这也合情合理,毕竟计算机本身就是二进制,这就是计算机最擅长的事情啊。
0异或任何数=任何数
1异或任何数-任何数取反
任何数异或自己=把自己置0
Share
启发很大,必须分享!
The Key To Accelerating Your Coding Skills