几天没来了

还在写多标签查询的方法(谈不上算法),流程大概整理出来了:

1. 查询和构建数据阵列(限制最大查询长度),每个标签对应的数组都是顺序。

2. 使用双指针查询(效率高于二分法)找到多个标签中重合部分,并记录输出。

3. 查询阵列末尾时间戳中的最小值,二分法查询各标签在该时间戳后的数据并缓存。

4. 下次查询时,自刚才最小值开始,查询数量=需求数量-已缓存数据。

5. 重复上述查询过程,所有输出的重合部分即结果。

C

双指针查询写法(GPT生成):

function findIntersection(arrays) {

    if (arrays.length === 0) {

      return [];

    }

  

    const sortedArrays = arrays.map(arr => [...arr].sort((a, b) => a - b));

    const intersection = [];

    const pointers = new Array(sortedArrays.length).fill(0);

  

    let done = false;

  

    while (!done) {

      const values = pointers.map((pointer, index) => sortedArrays[index][pointer]);

  

      const minValue = Math.min(...values);

      const maxValue = Math.max(...values);

  

      if (minValue === maxValue) {

        intersection.push(minValue);

  

        for (let i = 0; i < pointers.length; i++) {

          pointers[i]++;

        }

      } else {

        const minPointer = values.findIndex(value => value === minValue);

  

        if (minPointer === -1) {

          break;

        }

  

        pointers[minPointer]++;

      }

      done = pointers.some((pointer, index) => pointer === sortedArrays[index].length);

    }

  

    return intersection;

  }

  

  const arrays = [

    [1, 3, 4, 6, 7, 9],

    [2, 3, 4, 7, 9, 10],

    [3, 4, 7, 8, 9, 11]

  ];

  

  const intersection = findIntersection(arrays);

  console.log(intersection);
C

C大tql[em_5]

365cent
引用
C大tql[em_5]
365cent C大tql[em_5]

最快本周完成Demo,上班摸鱼摸爽了

C

C大又回来啦

zzzz
引用
C大又回来啦
zzzz C大又回来啦

最近可以摸鱼……

C
1