美文网首页
leetcode算法整理

leetcode算法整理

作者: 小灰灰_a | 来源:发表于2021-12-14 17:28 被阅读0次

1、查找和最小的K对数字

/**
         * 输入: nums1 = [1,7,11], nums2 = [2,4,6], k = 3
            输出: [1,2],[1,4],[1,6]
            解释: 返回序列中的前 3 对数:
            [1,2],[1,4],[1,6],[7,2],[7,4],[11,2],[7,6],[11,4],[11,6]
        */
        const nums1 =  [1,7,11], nums2 = [2,4,6], k = 3;
        const find = (arr1, arr2, k) => {
            let arr = []
            let obj = {}
            let res = []
            for (let i = 0; i < arr1.length; i++) {
                const itemi = arr1[i];
                for (let j = 0; j < arr2.length; j++) {
                    const itemj = arr2[j];
                    arr.push([itemi, itemj])
                }
            }
            arr.forEach(v => { obj[`${v[0] + v[1]}`] = v })
            for (const key in obj) {
                res.push(obj[key])
            }
            return res.splice(0, k)
        }
        const res = find(nums1, nums2, k)
        console.log('====================================');
        console.log(res); // [1,2],[1,4],[1,6]
        console.log('====================================');

2、扁平数据结构转Tree


 /**
   * 输入:let arr = [
              {id: 1, name: '部门1', pid: 0},
              {id: 2, name: '部门2', pid: 1},
              {id: 3, name: '部门3', pid: 1},
              {id: 4, name: '部门4', pid: 3},
              {id: 5, name: '部门5', pid: 4},
      ]
      输出:[
            {
              "id": 1,
              "name": "部门1",
              "pid": 0,
              "children": [
                  {
                      "id": 2,
                      "name": "部门2",
                      "pid": 1,
                      "children": []
                  },
                  {
                      "id": 3,
                      "name": "部门3",
                      "pid": 1,
                      "children": [
                          // 结果 ,,,
                      ]
                  }
              ]
          }
      ]
  */
        let arr = [
            { id: 1, name: '部门1', pid: 0 },
            { id: 2, name: '部门2', pid: 1 },
            { id: 3, name: '部门3', pid: 1 },
            { id: 4, name: '部门4', pid: 3 },
            { id: 5, name: '部门5', pid: 4 },
        ]

        const toTree = (arr) => {
            const res = []
            const obj = []
            for (const item of arr) {
                obj[item.id] = { ...item, children: [] }
            }
            for (const item of arr) {
                const treeItem = obj[item.id]
                if (item.pid === 0) {
                    res.push(treeItem)
                } else {
                    obj[item.pid].children.push(treeItem)
                }
            }
            return res
        }

        console.log(toTree(arr));

相关文章

  • Leetcode 347 Top K Frequent Elem

    上一篇leetcode专题,通过一道算法题,疏导了一下快速排序算法的知识点,今天根据leetcode的347整理一...

  • Android面经| 算法题解

    整理了校招面试算法题,部分《剑指offer》算法题,以及LeetCode算法题,本博文中算法题均使用Java实现校...

  • 2019 算法面试相关(leetcode)--字符串

    1、七种常见的数组排序算法整理(C语言版本)2、2019 算法面试相关(leetcode)--数组和链表3、201...

  • 2018 iOS面试题---算法相关

    1、七种常见的数组排序算法整理(C语言版本)2、2019 算法面试相关(leetcode)--数组和链表3、201...

  • Swap Nodes in Pairs

    标签: C++ 算法 LeetCode 链表 每日算法——leetcode系列 问题 Swap Nodes in ...

  • Combination Sum II

    标签: C++ 算法 LeetCode DFS 每日算法——leetcode系列 问题 Combinatio...

  • Divide Two Integers

    标签: C++ 算法 LeetCode 每日算法——leetcode系列 问题 Divide Two Integ...

  • First Missing Positive

    标签: C++ 算法 LeetCode 数组 每日算法——leetcode系列 问题 First Missing...

  • Valid Sudoku

    Valid Sudoku 标签: C++ 算法 LeetCode 每日算法——leetcode系列 问题 Val...

  • Next Permutation

    标签: C++ 算法 LeetCode 数组 每日算法——leetcode系列 问题 Next Permuta...

网友评论

      本文标题:leetcode算法整理

      本文链接:https://www.haomeiwen.com/subject/dolpfrtx.html