【leetcode】每日leetcode一题

其实有些算法思路挺有意思的,决定开始刷刷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
};
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值