其实有些算法思路挺有意思的,决定开始刷刷leetcode,先从简单的题开始吧!非最优解,仅记录分享
CSDN链接
github leetcode链接
6.16
1、两数之和
/**
* @param {number[]} nums
* @param {number} target
* @return {number[]}
*/
var twoSum = function(nums, target) {
let result = null
for(let i =0;i<nums.length-1;i++){
for(let j = i+1;j<nums.length;j++){
if(nums[i]+nums[j]===target){
result = [i,j]
break
}
}
}
return result;
};
6.17
28、实现strStr()
/**
* @param {string} haystack
* @param {string} needle
* @return {number}
*/
var strStr = function(haystack, needle) {
let haystacklen = haystack.length;
let needlelen = needle.length;
if(haystacklen<needlelen){return -1}
if(haystack === ''&&needle ===''){return 0}
let res = -1;
for(let i = 0;i <= haystacklen-needlelen;i++){
if(haystack.substr(i,needlelen)===needle){
res = i;
break;
}
}
return res;
};
6.21
26、删除有序数组中的重复项(数组去重)
/**
* @param {number[]} nums
* @return {number}
*/
var removeDuplicates = function(nums) {
for(let i = 0;i<=nums.length-1;i++){
for(let j = i+1;j<=nums.length-1;j++){
if(nums[i]===nums[j]){
nums.splice(i,1)
i--;
break;
}
}
}
};
6.23
27. 移除元素
/**
* @param {number[]} nums
* @param {number} val
* @return {number}
*/
var removeElement = function(nums, val) {
for(let i =0;i<nums.length;i++){
if(nums[i]===val){
nums.splice(i,1);
i--;
}
}
return nums.length;
};
7. 整数反转
/**
* @param {number} x
* @return {number}
*/
var reverse = function(x) {
var zhengfu = x>0?true:false;
x = x > 0?x:-x;
var res = parseInt(x.toString().split('').reverse().join(''));
return res > 2147483647 || res < -2147483648 ? 0 :(zhengfu?res:-res)
};
9. 回文数
/**
* @param {number} x
* @return {boolean}
*/
var isPalindrome = function(x) {
let res = false;
x===0?res = true:null;
if(x>0){
res = Number(x.toString().split('').reverse().join('')) === x ? true:false
}
return res;
};
14. 最长公共前缀
/**
* @param {string[]} strs
* @return {string}
*/
var longestCommonPrefix = function(strs) {
let shortestIndex = 0,
res = '';
for(let i = 0;i<strs.length-1;i++){
strs[i].length > strs[i+1].length ? shortestIndex = i+1:null
}
let shortestItem = strs[shortestIndex]
for(let k = shortestItem.length;k>=0;k--){
let hasIt = strs.every((item)=>{
return item.slice(0,k)===shortestItem.slice(0,k)
})
if(hasIt){
res = shortestItem.slice(0,k);
break;
}
}
return res
};
6.24
58. 最后一个单词的长度
/**
* @param {string} s
* @return {number}
*/
var lengthOfLastWord = function(s) {
var arr = s.trim().split(' ')
return arr[arr.length-1]?arr[arr.length-1].length:0
};
66. 加一
/**
* @param {number[]} digits
* @return {number[]}
*/
var plusOne = function(digits) {
let i = digits.length-1;
while(digits[i]===9){
digits[i] =0;
i--;
}
if(i<0){
digits.unshift(1)
}else{
digits[i]+=1
}
return digits
};