leetcode简单(数组、字符串):[219, 268, 349, 414, 485, 541, 557, 821, 925, 977]

时间:2023-01-30
本文章向大家介绍leetcode简单(数组、字符串):[219, 268, 349, 414, 485, 541, 557, 821, 925, 977],主要内容包括219. 存在重复元素、268. 丢失的数字、349. 两个数组的交集、414. 第三大的数、485. 最大连续 1 的个数、541. 反转字符串 II、557. 反转字符串中的单词 III、821. 字符的最短距离、925. 长按键入、使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

219. 存在重复元素

var containsNearbyDuplicate = function(nums, k) {
    for (let i = 0; i < nums.length; i++) {
        let j = nums.indexOf(nums[i], i + 1)
        if (j > -1 && Math.abs(i - j) <= k) {
            return true
        }
    }
    return false
};

268. 丢失的数字

var missingNumber = function(nums) {
    nums.sort((a, b) => a - b)
    for (let i = 0; i <= nums.length; i++) {
        if (i !== nums[i]) {
            return i
        }
    }
};

349. 两个数组的交集

var intersection = function(nums1, nums2) {
    let set1 = new Set(nums1)
    let set2 = new Set(nums2)
    return [...set1].filter(n => set2.has(n))
};

414. 第三大的数

var thirdMax = function(nums) {
    let newArr = Array.from(new Set(nums)).sort((a, b) => b - a)
    return newArr[2] || newArr[2] == 0 ? newArr[2] : newArr[0]
};

485. 最大连续 1 的个数

var findMaxConsecutiveOnes = function(nums) {
    let oneList = nums.join('').split('0').filter(i => i).map(i => i.length)
    return Math.max(...oneList) | 0

};

541. 反转字符串 II

var reverseStr = function(s, k) {
    let tmpK = []
    let result = []
    for (let i = 0; i < s.length; i++) {
        tmpK.push(s[i])
        if (tmpK.length == k || (tmpK.length < k && i == s.length - 1)) {
            tmpK = tmpK.reverse()
        }
        if (tmpK.length == k * 2 || i == s.length - 1) {
            result = result.concat(tmpK)
            tmpK = []
        }
    }
    return result.join('')
};

557. 反转字符串中的单词 III

var reverseWords = function(s) {
    var arr = s.split(' ')
    var result = []
    for (let i = 0; i < arr.length; i++) {
        result.push(arr[i].split('').reverse().join(''))
    }
    return result.join(' ')

};

821. 字符的最短距离

var shortestToChar = function(s, c) {
    let res = new Array(s.length).fill(s.length)
    for (let i = 0; i < s.length; i++) {
        if (s[i] == c) {
            for (let j = 0; j < s.length; j++) {
                res[j] = Math.min(Math.abs(i - j), res[j])
            }
        }
    }
    return res
};

925. 长按键入

var isLongPressedName = function(name, typed) {
    let reg = /([a-z])\1*/g
    let arr1 = name.match(reg)
    let arr2 = typed.match(reg)
    if (arr1.length !== arr2.length) return false
    for (let i = 0; i < arr1.length; i++) {
        if (arr1[i].length > arr2[i].length || arr1[i][0] !== arr2[i][0]) {
            return false
        }
    }
    return true
};

977. 有序数组的平方

var sortedSquares = function(nums) {
    let newArr = nums.map(n => Math.abs(n)).sort((a, b) => a - b)
    let res = newArr.map(n => n * n)
    return res
};

原文地址:https://www.cnblogs.com/echoyya/p/17077059.html