六月

URL 化

URL 化。编写一种方法,将字符串中的空格全部替换为%20。假定该字符串尾部有足够的空间存放新增字符,并且知道字符串的 “真实” 长度。

  • 来源:力扣 (LeetCode)
  • 链接:https://leetcode.cn/problems/string-to-url-lcci
function replaceSpaces(S: string, length: number): string { 
    // return S.substr(0,length).replace(/\s/g,'%20')
    // return S.substring(0,length).replace(/\s/g,'%20')
    // return S.slice(0,length).replace(/\s/g,'%20')
    return S.substr(0,length).split(' ').join('%20')
};

接雨水

function trap(height: number[]): number {
    let len = height.length

    if(len === 0) return 0

    let leftMax = new Array(len).fill(0) 
    leftMax[0] = height[0]

    for(let i=1; i<len; i++){
        leftMax[i] = Math.max(leftMax[i-1],height[i])
    }

    let rightMax = new Array(len).fill(0)

    rightMax[len-1] = height[len-1]

    for(let i=len-2;i>=0;i--){
        rightMax[i] = Math.max(rightMax[i+1],height[i])
    }
    
    let res = 0
    for(let i=0;i<len;i++){
        res += Math.min(leftMax[i], rightMax[i])- height[i]
    }

    return res
};

缺失的第一个正数

给你一个未排序的整数数组 nums,请你找出其中没有出现的最小的正整数。

请你实现时间复杂度为 O(n) 并且只使用常数级别额外空间的解决方案。

function firstMissingPositive(nums: number[]): number {
    const len = nums.length
    if(len === 0) return 1
    if(len === 1 && nums[0] <= 0) return 1

    let arr = []

    nums.forEach((i) => {
        if(i>=0){
            arr[i] = true
        }
    })
    

    if(!arr.length) return 1
 
    for(let i=1;i<arr.length;i++){
        if(!arr[i]){
            return i
        }
    }


    return arr.length
};
上次更新:
贡献者: Joe