字节算法题


前言

收集字节codetop,牛客的算法题,codetop以没做过的为主

国际电商

907. 子数组的最小值之和 - 力扣(LeetCode)

91. 解码方法 - 力扣(LeetCode)

求解完全二叉树的最右边的节点

33. 搜索旋转排序数组 - 力扣(LeetCode)

409. 最长回文串 - 力扣(LeetCode)

88. 合并两个有序数组 - 力扣(LeetCode)

25. K 个一组翻转链表 - 力扣(LeetCode)

42. 接雨水 - 力扣(LeetCode)

最大活跃线程数:数组a和数组b,a有序,b无序,a表示在某一时候进入到线程池的线程,b表示在某一时刻杀掉了一些线程。问线程池最大活跃线程数目。使用双指针。

61. 旋转链表 - 力扣(LeetCode)

386. 字典序排数 - 力扣(LeetCode)

162. 寻找峰值 - 力扣(LeetCode)

后序遍历非递归

124. 二叉树中的最大路径和 - 力扣(LeetCode)

消消乐,规定了n个消除,比如aabbcccc,4,输出是aabb:

public static String eliminate(String s, int n) {
        // 两个栈:一个存字符,一个存对应的计数
        Stack<Character> charStack = new Stack<>();
        Stack<Integer> countStack = new Stack<>();
        
        for (char c : s.toCharArray()) {
            // 如果栈不为空且栈顶字符与当前字符相同,则增加计数
            if (!charStack.isEmpty() && charStack.peek() == c) {
                countStack.push(countStack.pop() + 1);
            } else {
                // 否则,压入新字符,并初始化计数为1
                charStack.push(c);
                countStack.push(1);
            }
            
            // 如果计数达到n,则同时弹出字符和计数
            if (countStack.peek() == n) {
                charStack.pop();
                countStack.pop();
            }
        }
        
        // 构建最终字符串
        StringBuilder result = new StringBuilder();
        while (!charStack.isEmpty()) {
            char currentChar = charStack.pop();
            int count = countStack.pop();
            for (int i = 0; i < count; i++) {
                result.insert(0, currentChar); // 插入到字符串的前面
            }
        }
        
        return result.toString();
    }

带过期时间的LRU

未知

658. 找到 K 个最接近的元素 - 力扣(LeetCode)

LCR 143. 子结构判断 - 力扣(LeetCode)

148. 排序链表 - 力扣(LeetCode)

32. 最长有效括号 - 力扣(LeetCode)

小于n的最大数

番茄小说

207. 课程表 - 力扣(LeetCode)


  目录