算法60天训练–9-18-day13

算法60天训练–9-18-day13

思路

因为要求滑动窗口中的最大值, 所以比较容易实现的便是,自己定义一个结构,能够让队列头始终是滑动窗口中最大的:

www.zeeklog.com  - 算法60天训练–9-18-day13

www.zeeklog.com  - 算法60天训练–9-18-day13

Code

Java

class MyQue{
    Deque<Integer> deque = new LinkedList<>();
    void poll(int value){
        if(!deque.isEmpty() && value == deque.peek()){
            deque.poll();
        }
    }
        void add(int val){
            while(!deque.isEmpty()  && val > deque.getLast()){
                deque.removeLast();
            }
            deque.add(val);
        }

        int peek(){
            return deque.peek();
        }
    
}
class Solution {

    
    public int[] maxSlidingWindow(int[] nums, int k) {
    if(nums.length == 1){
        return nums;
    }
    int len = nums.length - k  + 1;
    // 存放结果元素的数组
    int[] res = new int[len];
    int num = 0;

    MyQue myque = new MyQue();

    for(int i = 0; i < k; i++){
        myque.add(nums[i]);
    }
    res[num++] = myque.peek();
    for(int i = k; i < nums.length; i++){
        myque.poll(nums[i-k]);

        myque.add(nums[i]);
        res[num++] = myque.peek();
    }

    return res;
    }

}

C++

class MyQue{
    Deque<Integer> deque = new LinkedList<>();
    void poll(int value){
        if(!deque.isEmpty() && value == deque.peek()){
            deque.poll();
        }
    }
        void add(int val){
            while(!deque.isEmpty()  && val > deque.getLast()){
                deque.removeLast();
            }
            deque.add(val);
        }

        int peek(){
            return deque.peek();
        }
    
}
class Solution {

    
    public int[] maxSlidingWindow(int[] nums, int k) {
    if(nums.length == 1){
        return nums;
    }
    int len = nums.length - k  + 1;
    // 存放结果元素的数组
    int[] res = new int[len];
    int num = 0;

    MyQue myque = new MyQue();

    for(int i = 0; i < k; i++){
        myque.add(nums[i]);
    }
    res[num++] = myque.peek();
    for(int i = k; i < nums.length; i++){
        myque.poll(nums[i-k]);

        myque.add(nums[i]);
        res[num++] = myque.peek();
    }

    return res;
    }

}

Read more

LibreChat 集成 Stripe 支付的奶妈级教程

LibreChat 集成 Stripe 支付的奶妈级教程

我们假设你已经熟悉基本的 React 和 Node.js 开发,并且正在使用 LibreChat 的默认技术栈(React 前端、Node.js 后端、Vite 构建工具,可能还有 Electron 桌面应用)。教程会特别考虑 Electron 环境下的适配问题(例如 macOS 中文路径或路由错误)。“奶妈级”带你从零开始实现支付功能(包括一次性支付和添加高级会员订阅) 教程目标 * 在 LibreChat 中添加支付页面,支持用户通过信用卡付款。 * 实现 Stripe 的一次性支付功能。 * (可选)扩展到订阅功能,管理高级会员状态。 * 解决 Electron 环境下的常见问题(如路由和路径解析)。 * 生成可公开推送的 Markdown 教程,方便社区参考。 前提条件 在开始之前,请确保你已准备好以下内容:

By Ne0inhk
超棒的雅思资源!

超棒的雅思资源!

雅思真题材料地址: https://github.com/zeeklog/IETLS 感谢所有人。材料来自:@shah0150 & @kbtxwer * 超棒的雅思资源 * 雅思简介 * 听力 * 阅读 * 写作 * 口语 * 词汇 * 其他 * YouTube 频道 * [播客] (#podcasts) 雅思简介 * 什么是雅思 - 了解什么是雅思 听力 * 高级听力 * 雅思官方网站 * 考试英语 * 英国广播公司节目 * 乔治梅森大学口音学习网站 - 学习不同的口音 * 英国广播公司播客 * 英国文化协会听力练习 阅读 * 雅思提升阅读 写作 * 雅思提升写作 * 雅思从 6 分到 9 分 * 迷你雅思 口语 * Verbling 提供在线英语家教服务

By Ne0inhk