学算法的初衷
算法对于编程来说蛮重要的,学好算法可以提升思维,简化代码,提高工作效率,为面试大厂提供有利的加分项,因此接下来每天我会分享一些新学的解题思路,话不多说,我们开始。
算法题(1)
对于此题,首先我想到了爆破,代码很简单,但是效率会很低,既然是学习阶段,当然需要高效的代码更好。
对于查找两数之和,找到满足条件的两组下标,此时用哈希表存储数据最合适不过。
var twoSum = function(nums, target) {
const map = new Map()
for(let i=0;i<nums.length;i++){
if(map.has(target-nums[i]))
return [map.get(target-nums[i]),i]
else
map.set(nums[i],i)
}
return []
};
算法题(2)
这里注意一下,js基础语法在取各位数字时,js中’/'运算符得到的会得到小数,因此我们需要添加一个向下取整环节,为了简化代码,可以首先排除负数和能被十整除的数。
var isPalindrome = function(x) {
if(x < 0 || (!(x % 10))) return false;
let x2 = x, res = 0;
while(x2){
res = res * 10 + x2 % 10;
x2 = ~~(x2 / 10);
}
return res === x;
};