上一主题 下一主题
ScriptCat,新一代的脚本管理器脚本站,与全世界分享你的用户脚本油猴脚本开发指南教程目录
返回列表 发新帖
楼主: 李恒道 - 

【当前排名42710】挑战leetcode进入前1w名

[复制链接]
  • TA的每日心情
    无聊
    2025-1-31 20:04
  • 签到天数: 195 天

    [LV.7]常住居民III

    754

    主题

    6645

    回帖

    7305

    积分

    管理员

    非物质文化遗产社会摇传承人

    积分
    7305

    荣誉开发者喜迎中秋油中2周年生态建设者

    发表于 2025-2-3 01:58:06 | 显示全部楼层

    https://leetcode.cn/problems/maximum-fruits-harvested-after-at-most-k-steps/submissions/596428450/
    2062分
    刺激

    var maxTotalFruits = function (fruits, startPos, k) {
      const cache = new Map();
      for (let index = 0; index < fruits.length; index++) {
        const fruit = fruits[index];
        cache.set(fruit[0], fruit[1]);
      }
      const nextArr = new Array(k + 1);
      const preArr = new Array(k + 1);
      let ans = 0;
      preArr[0] = 0;
      nextArr[0] = 0;
      for (let index = 1; index <= k; index++) {
        nextArr[index] =
          (nextArr[index - 1] ?? 0) + (cache.get(startPos + index) ?? 0);
        preArr[index] =
          (preArr[index - 1] ?? 0) + (cache.get(startPos - index) ?? 0);
      }
      ans = Math.max(nextArr[k], preArr[k]);
      let step = 1;
      while (step * 2 < k) {
        ans = Math.max(ans, preArr[step] + nextArr[k - 2 * step]);
        ans = Math.max(ans, nextArr[step] + preArr[k - 2 * step]);
        step++;
      }
      return ans+(cache.get(startPos)??0);
    };
    混的人。
    ------------------------------------------
    進撃!永遠の帝国の破壊虎---李恒道

    入驻了爱发电https://afdian.com/a/lihengdao666
    回复
    订阅

    使用道具 举报

  • TA的每日心情
    无聊
    2025-1-31 20:04
  • 签到天数: 195 天

    [LV.7]常住居民III

    754

    主题

    6645

    回帖

    7305

    积分

    管理员

    非物质文化遗产社会摇传承人

    积分
    7305

    荣誉开发者喜迎中秋油中2周年生态建设者

    发表于 2025-2-3 20:31:22 | 显示全部楼层

    https://leetcode.cn/problems/maximize-win-from-two-segments/submissions/596544309/
    2100分题
    这个做了一下午
    艰难

    function maximizeWin(prizePositions, k) {
      const mx = new Array(prizePositions.length).fill(0);
      let left = 0;
      let ans = 0;
      for (let right = 0; right < prizePositions.length; right++) {
        const prizePosition = prizePositions[right];
        while (prizePosition - k > prizePositions[left]) {
          left++;
        }
        mx[right] = Math.max(mx[right - 1] ?? 0, right - left + 1);
        ans = Math.max(ans,(mx[left-1]??0)+right - left + 1);
      }
      return ans
    }
    混的人。
    ------------------------------------------
    進撃!永遠の帝国の破壊虎---李恒道

    入驻了爱发电https://afdian.com/a/lihengdao666
    回复

    使用道具 举报

  • TA的每日心情
    无聊
    2025-1-31 20:04
  • 签到天数: 195 天

    [LV.7]常住居民III

    754

    主题

    6645

    回帖

    7305

    积分

    管理员

    非物质文化遗产社会摇传承人

    积分
    7305

    荣誉开发者喜迎中秋油中2周年生态建设者

    发表于 2025-2-3 22:03:50 | 显示全部楼层

    https://leetcode.cn/problems/minimum-number-of-operations-to-make-array-continuous/submissions/596560947/
    过了

    var minOperations = function (nums) {
      nums = nums.sort((a, b) => a - b);
      let border = 1;
      const n = nums.length - 1;
      for (let index = 1; index < nums.length; index++) {
        const num = nums[index];
        if (num !== nums[index - 1]) {
          nums[border] = num;
          border++;
        }
      }
      let left = 0;
      let ans = 0;
      for (let index = 0; index < border; index++) {
        const num = nums[index];
        if (num - n > nums[left]) {
          left++;
        }
        ans = Math.max(ans, index - left + 1);
      }
      return   nums.length-ans;
    };
    混的人。
    ------------------------------------------
    進撃!永遠の帝国の破壊虎---李恒道

    入驻了爱发电https://afdian.com/a/lihengdao666
    回复

    使用道具 举报

  • TA的每日心情
    无聊
    2025-1-31 20:04
  • 签到天数: 195 天

    [LV.7]常住居民III

    754

    主题

    6645

    回帖

    7305

    积分

    管理员

    非物质文化遗产社会摇传承人

    积分
    7305

    荣誉开发者喜迎中秋油中2周年生态建设者

    发表于 2025-2-3 23:00:46 | 显示全部楼层

    https://leetcode.cn/problems/shortest-and-lexicographically-smallest-beautiful-string/submissions/596571110/

    var shortestBeautifulSubstring = function (s, k) {
      let left = 0,
        num = 0;
      let ans = "";
      for (let index = 0; index < s.length; index++) {
        const char = s[index];
        if (char == "1") {
          num++;
        }
        while (num > k) {
          if (s[left] == "1") {
            num--;
          }
          left++;
        }
        while(s[left] == "0"){
          left++
        }
        if (num == k) {
          const str = s.slice(left, index + 1);
          if (ans == "") {
            ans = str;
          } else if (str.length<ans.length||(str.length==ans.length&&str < ans)) {
            ans = str;
          }
        }
      }
      return ans;
    };
    混的人。
    ------------------------------------------
    進撃!永遠の帝国の破壊虎---李恒道

    入驻了爱发电https://afdian.com/a/lihengdao666
    回复

    使用道具 举报

  • TA的每日心情
    无聊
    2025-1-31 20:04
  • 签到天数: 195 天

    [LV.7]常住居民III

    754

    主题

    6645

    回帖

    7305

    积分

    管理员

    非物质文化遗产社会摇传承人

    积分
    7305

    荣誉开发者喜迎中秋油中2周年生态建设者

    发表于 2025-2-4 00:14:25 | 显示全部楼层

    https://leetcode.cn/problems/sort-array-by-parity-ii/submissions/596581859/
    秒了

    var sortArrayByParityII = function (nums) {
      const arr = [];
      for (let index = 0; index < nums.length; index++) {
        let num = nums[index];
        if (index % 2 !== num % 2) {
          for (let indey = index + 1; indey < nums.length; indey++) {
            if (index % 2 == nums[indey] % 2) {
              const temp = num;
              num = nums[indey];
              nums[indey] = temp;
              break;
            }
          }
        }
        arr.push(num);
      }
      return arr;
    };
    混的人。
    ------------------------------------------
    進撃!永遠の帝国の破壊虎---李恒道

    入驻了爱发电https://afdian.com/a/lihengdao666
    回复

    使用道具 举报

  • TA的每日心情
    无聊
    2025-1-31 20:04
  • 签到天数: 195 天

    [LV.7]常住居民III

    754

    主题

    6645

    回帖

    7305

    积分

    管理员

    非物质文化遗产社会摇传承人

    积分
    7305

    荣誉开发者喜迎中秋油中2周年生态建设者

    发表于 2025-2-4 00:18:15 | 显示全部楼层

    https://leetcode.cn/problems/sort-array-by-parity/submissions/596582284/

    var sortArrayByParity = function (nums) {
      const arr = [];
      let noMap = false;
      for (let index = 0; index < nums.length; index++) {
        let num = nums[index];
        let isFind = false;
        if (!noMap) {
          for (let indey = index + 1; indey < nums.length; indey++) {
            if (nums[indey] % 2 == 0) {
              const temp = num;
              num = nums[indey];
              nums[indey] = temp;
              isFind = true;
              break;
            }
          }
        }
        if (isFind == false) {
          noMap = true;
        }
        arr.push(num);
      }
      return arr;
    };
    混的人。
    ------------------------------------------
    進撃!永遠の帝国の破壊虎---李恒道

    入驻了爱发电https://afdian.com/a/lihengdao666
    回复

    使用道具 举报

  • TA的每日心情
    无聊
    2025-1-31 20:04
  • 签到天数: 195 天

    [LV.7]常住居民III

    754

    主题

    6645

    回帖

    7305

    积分

    管理员

    非物质文化遗产社会摇传承人

    积分
    7305

    荣誉开发者喜迎中秋油中2周年生态建设者

    发表于 2025-2-4 01:26:04 | 显示全部楼层

    https://leetcode.cn/problems/replace-the-substring-for-balanced-string/submissions/596587043/

    var balancedString = function (s) {
      const arr = {
        Q: 0,
        W: 0,
        E: 0,
        R: 0,
      };
      const average = s.length / 4;
      for (let index = 0; index < s.length; index++) {
        const char = s[index];
        arr[char]++;
      }
      if (arr.Q == arr.W && arr.Q == arr.W && arr.Q == arr.E && arr.Q == arr.R) {
        return 0;
      }
      let left = 0;
      let ans=Number.MAX_SAFE_INTEGER
      for (let index = 0; index < s.length; index++) {
        const char = s[index];
        arr[char]--;
        while(arr.Q <=average && arr.W<=average && arr.E <=average&& arr.R <=average){
          ans=Math.min(ans,index-left+1);
          arr[s[left]]++;
          left++
        }
      }
      return ans
    };
    混的人。
    ------------------------------------------
    進撃!永遠の帝国の破壊虎---李恒道

    入驻了爱发电https://afdian.com/a/lihengdao666
    回复

    使用道具 举报

  • TA的每日心情
    无聊
    2025-1-31 20:04
  • 签到天数: 195 天

    [LV.7]常住居民III

    754

    主题

    6645

    回帖

    7305

    积分

    管理员

    非物质文化遗产社会摇传承人

    积分
    7305

    荣誉开发者喜迎中秋油中2周年生态建设者

    发表于 2025-2-4 02:20:05 | 显示全部楼层

    https://leetcode.cn/problems/minimum-size-subarray-in-infinite-array/submissions/596606950/

    var minSizeSubarray = function (nums, target) {
      let right = 0,
        left = 0;
      let total = 0;
      ans = Number.MAX_SAFE_INTEGER;
      let allTotal = 0;
      for (let index = 0; index < nums.length; index++) {
        allTotal += nums[index];
      }
      const len = Math.floor(target / allTotal);
      target = target % allTotal;
      while (left < nums.length) {
        total += nums[right % nums.length];
        while (total > target) {
          total -= nums[left];
          left++;
        }
        if (total == target) {
          ans = Math.min(ans, right - left + 1);
        }
        right++;
      }
      return ans == Number.MAX_SAFE_INTEGER ? -1 : ans+len*nums.length;
    };
    混的人。
    ------------------------------------------
    進撃!永遠の帝国の破壊虎---李恒道

    入驻了爱发电https://afdian.com/a/lihengdao666
    回复

    使用道具 举报

  • TA的每日心情
    无聊
    2025-1-31 20:04
  • 签到天数: 195 天

    [LV.7]常住居民III

    754

    主题

    6645

    回帖

    7305

    积分

    管理员

    非物质文化遗产社会摇传承人

    积分
    7305

    荣誉开发者喜迎中秋油中2周年生态建设者

    发表于 2025-2-4 03:47:00 | 显示全部楼层

    https://leetcode.cn/problems/longest-nice-substring/submissions/596608781/
    秒了

    var longestNiceSubstring = function (s) {
      let ans = [-1, -1];
      for (let index = 0; index < s.length; index++) {
        for (let indey = index + 1; indey < s.length; indey++) {
          let char = new Array(128).fill(0);
          for (let indez = index; indez <= indey; indez++) {
            char[s[indez].charCodeAt()]++;
          }
          let isSuccess = true;
          for (let index = 65; index <= 90; index++) {
            if ((char[index]!=0) !== (char[index + 32]!=0)) {
              isSuccess = false;
              break;
            }
          }
          if (isSuccess && ans[1] - ans[0]+1 < indey - index + 1) {
            ans=[index,indey]
          }
        }
      }
      return ans[0]==-1?"":s.slice(ans[0],ans[1]+1)
    };
    混的人。
    ------------------------------------------
    進撃!永遠の帝国の破壊虎---李恒道

    入驻了爱发电https://afdian.com/a/lihengdao666
    回复

    使用道具 举报

  • TA的每日心情
    无聊
    2025-1-31 20:04
  • 签到天数: 195 天

    [LV.7]常住居民III

    754

    主题

    6645

    回帖

    7305

    积分

    管理员

    非物质文化遗产社会摇传承人

    积分
    7305

    荣誉开发者喜迎中秋油中2周年生态建设者

    发表于 2025-2-5 01:04:41 | 显示全部楼层

    https://leetcode.cn/problems/smallest-range-covering-elements-from-k-lists/submissions/596772866/
    过了

    class Heap {
      constructor(comparator = (a, b) => a - b) {
        this.heap = [];
        this.comparator = comparator;
      }
    
      getParentIndex(index) {
        return Math.floor((index - 1) / 2);
      }
    
      getLeftChildIndex(index) {
        return 2 * index + 1;
      }
    
      getRightChildIndex(index) {
        return 2 * index + 2;
      }
    
      swap(index1, index2) {
        const temp = this.heap[index1];
        this.heap[index1] = this.heap[index2];
        this.heap[index2] = temp;
      }
    
      insert(value) {
        this.heap.push(value);
        this.heapifyUp();
      }
    
      heapifyUp() {
        let index = this.heap.length - 1;
        while (index > 0) {
          const parentIndex = this.getParentIndex(index);
          if (this.comparator(this.heap[index], this.heap[parentIndex]) < 0) {
            this.swap(index, parentIndex);
            index = parentIndex;
          } else {
            break;
          }
        }
      }
    
      extractMin() {
        if (this.heap.length === 0) {
          return null;
        }
        if (this.heap.length === 1) {
          return this.heap.pop();
        }
        const min = this.heap[0];
        this.heap[0] = this.heap.pop();
        this.heapifyDown(0);
        return min;
      }
      getMin() {
        if (this.heap.length === 0) {
          return null;
        }
        return this.heap[0];
      }
    
      heapifyDown(index) {
        let smallest = index;
        const leftChildIndex = this.getLeftChildIndex(index);
        const rightChildIndex = this.getRightChildIndex(index);
    
        if (
          leftChildIndex < this.heap.length &&
          this.comparator(this.heap[leftChildIndex], this.heap[smallest]) < 0
        ) {
          smallest = leftChildIndex;
        }
    
        if (
          rightChildIndex < this.heap.length &&
          this.comparator(this.heap[rightChildIndex], this.heap[smallest]) < 0
        ) {
          smallest = rightChildIndex;
        }
    
        if (smallest !== index) {
          this.swap(index, smallest);
          this.heapifyDown(smallest);
        }
      }
    
      peek() {
        return this.heap.length > 0 ? this.heap[0] : null;
      }
    
      size() {
        return this.heap.length;
      }
    }
    /**
     * @param {number[][]} nums
     * @Return {number[]}
     */
    var smallestRange = function (nums) {
      const heap = new Heap((a, b) => a[0] - b[0]);
      let max = Number.MIN_SAFE_INTEGER;
      for (let index = 0; index < nums.length; index++) {
        const arr = nums[index];
        max = Math.max(max, arr[0]);
        heap.insert([arr[0], index, 0]);
      }
      let ansL = heap.getMin()[0]; // 第一个合法区间的左端点
      let ansR = max; // 第一个合法区间的右端点
    
      while (true) {
        let min = heap.getMin();
        if (min[2] + 1 >= nums[min[1]].length) {
          break;
        }
        min = heap.extractMin();
        const nextNum = nums[min[1]][min[2] + 1];
        heap.insert([nextNum, min[1], min[2] + 1]);
        max = Math.max(max, nextNum);
        min = heap.getMin();
        if (ansR - ansL > max - min[0]) {
          ansR = max;
          ansL = min[0];
        }
      }
      return [ansL, ansR];
    };
    混的人。
    ------------------------------------------
    進撃!永遠の帝国の破壊虎---李恒道

    入驻了爱发电https://afdian.com/a/lihengdao666
    回复

    使用道具 举报

    发表回复

    本版积分规则

    快速回复 返回顶部 返回列表