解算法题的四个基本思路:
一、阅读完成条件
二、选择数据结构
三、时间复杂度分析
四、判断边界条件
五、继续探索取巧方法
例子解析:
LeeCode 136题:只出现一次的数字
给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。
解答思路:
一、阅读完成条件:非空整数数组、每个元素出现两次、1个元素出现1次
二、选择数据结构:双for循环、排序+二分法、HashMap
三、时间复杂度分析:双for循环 、排序+二分法 、HashMap
四、判断边界条件:排序+二分法需要考虑数组的边界问题
五、继续探索取巧方法:异或解法:
int result = nums[0];
if (nums.length > 1) {
for (int i = 1; i < nums.length; i++) {
result = result ^ nums[i];
}
}
return result;