leetcode Day65 剑指 3-7

80 阅读1分钟

1331. 数组序号转换

var arrayRankTransform = function(arr) {
    let arr_copy=[...new Set(arr)]
    arr_copy.sort((a,b)=>a-b)
    let map=new Map()
    let res=[]
    for(let i=0;i<arr_copy.length;i++){
         map.set(arr_copy[i],i+1)
    }
    for(let i of arr){
        res.push(map.get(i))
    }
    return res
};

剑指 Offer 03. 数组中重复的数字

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

剑指 Offer 04. 二维数组中的查找

var findNumberIn2DArray = function(matrix, target) {
    if(matrix.length===0)return false
    const m=matrix.length,n=matrix[0].length
    let i=0,j=n-1
    while(i<m && j>=0){
        if(target===matrix[i][j]){
            return true
        }
        else if(target>matrix[i][j]){
            i++
        }
        else{
            j--
        }
    }
    return false
};

剑指 Offer 05. 替换空格

var replaceSpace = function(s) {
    return s.replaceAll(' ','%20')
};

剑指 Offer 06. 从尾到头打印链表

var reversePrint = function(head) {
    const res=[]
    let node=head
    while(node){
        res.push(node.val)
        node=node.next
    }
    return res.reverse()
};

剑指 Offer 07. 重建二叉树

var buildTree = function(preorder, inorder) {
    if(preorder.length===0 || inorder.length===0){
        return null
    }
    let idx=inorder.indexOf(preorder[0])
    let left=inorder.slice(0,idx)
    let right=inorder.slice(idx+1)
    return {
        val:preorder[0],
        left:buildTree(preorder.slice(1,idx+1),left),
        right:buildTree(preorder.slice(idx+1),right)
    }
};