1906. 查询差绝对值的最小值

  1. function minDifference(nums: number[], queries: number[][]): number[] {
  2. let m = nums.length, n = queries.length;
  3. let max = 100;
  4. // let max = Math.max(...nums);
  5. let pre: number[][] = [];
  6. pre.push(new Array(max + 1).fill(0));
  7. for (let i = 0; i < m; ++i) {
  8. let num = nums[i];
  9. pre.push(pre[i].slice());
  10. pre[i + 1][num] += 1;
  11. }
  12. let ans = [];
  13. for (let [left, right] of queries) {
  14. let last = -1;
  15. let min = Infinity;
  16. for (let j = 1; j < max + 1; ++j) {
  17. if (pre[left][j] < pre[right + 1][j]) {
  18. if (last != -1) {
  19. min = Math.min(min, j - last);
  20. }
  21. last = j;
  22. }
  23. }
  24. ans.push(min == Infinity ? -1 : min);
  25. }
  26. return ans;
  27. };