avatar
文章
129
标签
29
分类
4

首页
归档
分类
关于
阿日哥的向量空间
搜索
首页
归档
分类
关于

阿日哥的向量空间

LeetCode 146. LRU缓存
发表于2022-03-10|计算机|LeetCode
请你设计并实现一个满足 LRU (最近最少使用) 缓存 约束的数据结构。 实现 LRUCache 类: LRUCache(int capacity) 以 正整数 作为容量 capacity 初始化 LRU 缓存 int get(int key) 如果关键字 key 存在于缓存中,则返回关键字的值,否则返回 -1 。 void put(int key, int value) 如果关键字 key 已经存在,则变更其数据值 value ;如果不存在,则向缓存中插入该组 key-value 。如果插入操作导致关键字数量超过 capacity ,则应该 逐出 最久未使用的关键字。 函数 get 和 put 必须以 O(1) 的平均时间复杂度运行。 示例: 输入["LRUCache", "put", "put", "get", "put", "get", "put", "get", "get", "get"][[2], [1, 1], [2, 2], [1], [3, 3], [2], [4, 4], [1], [3], [4]]输出[null, null, null, 1, null, - ...
LeetCode 103. 二叉树的锯齿形层序遍历
发表于2022-03-09|计算机|LeetCode
给你二叉树的根节点 root ,返回其节点值的 锯齿形层序遍历 。(即先从左往右,再从右往左进行下一层遍历,以此类推,层与层之间交替进行)。 示例 1: 输入:root = [3,9,20,null,null,15,7]输出:[[3],[20,9],[15,7]] 示例 2: 输入:root = [1]输出:[[1]] 示例 3: 输入:root = []输出:[] 提示: 树中节点数目在范围 [0, 2000] 内-100 <= Node.val <= 100 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/binary-tree-zigzag-level-order-traversal 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。 思路 层次遍历当然是使用队列实现。Queue在Java中是一个接口,接口下有add,offer,poll,peek等方法。LinkedList类实现了这个接口(常用的还有优先级队列PriorityQueue),所以我们在这里使用LinkedList,但我们并不直 ...
LeetCode 54. 螺旋矩阵
发表于2022-03-09|计算机|LeetCode
给你一个 m 行 n 列的矩阵 matrix ,请按照 顺时针螺旋顺序 ,返回矩阵中的所有元素。 示例 1: 输入:matrix = [[1,2,3],[4,5,6],[7,8,9]]输出:[1,2,3,6,9,8,7,4,5] 示例 2: 输入:matrix = [[1,2,3,4],[5,6,7,8],[9,10,11,12]]输出:[1,2,3,4,8,12,11,10,9,5,6,7] 提示: m == matrix.lengthn == matrix[i].length1 <= m, n <= 10-100 <= matrix[i][j] <= 100 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/spiral-matrix 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。 思路 递归处理即可。 class Solution { public List<Integer> ans = new ArrayList<>(8); int[][] ...
剑指Offer 12. 矩阵中的路径
发表于2022-03-06|计算机|LeetCode•剑指Offer
给定一个m x n二维字符网格board和一个字符串单词word。如果word存在于网格中,返回true;否则,返回false。 单词必须按照字母顺序,通过相邻的单元格内的字母构成,其中“相邻”单元格是那些水平相邻或垂直相邻的单元格。同一个单元格内的字母不允许被重复使用。 例如,在下面的3×4的矩阵中包含单词"ABCCED"(单词中的字母已标出)。 示例 1: 输入:board = [["A","B","C","E"],["S","F","C","S"],["A","D","E","E"]], word = "ABCCED"输出:true 示例 2: 输入:board = [["a","b"],["c","d"]], word = "abcd"输出:false 提示: 1 <= board.length <= 200 1 <= board[i].length <= 200 board和word仅由大小写英文字母组成 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/ju-zhen-zhong-de-lu-j ...
剑指Offer II 076. 数组中的第 k 大的数字
发表于2022-03-06|计算机|LeetCode•剑指Offer
给定整数数组nums和整数k,请返回数组中第k个最大的元素。 请注意,你需要找的是数组排序后的第k个最大的元素,而不是第k个不同的元素。 示例 1: 输入: [3,2,1,5,6,4] 和 k = 2输出: 5 示例 2: 输入: [3,2,3,1,2,4,5,5,6] 和 k = 4输出: 4 提示: 1 <= k <= nums.length <= 104 104 <= nums[i] <= 104 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/xx4gT2 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。 思路 求一个数列中的第k大的数,将前k个数建小顶堆,后面若比堆顶元素还小,则舍去,否则将堆顶置换成该元素,然后维护堆,最后输出堆顶元素。 class Solution { public int findKthLargest(int[] nums, int k) { PriorityQueue<Integer> least = new Pr ...
剑指Offer II 060. 出现频率最高的 k 个数字
发表于2022-03-06|计算机|LeetCode•剑指Offer
给定一个整数数组nums和一个整数k,请返回其中出现频率k高的元素。可以按任意顺序返回答案。 示例 1: 输入: nums = [1,1,1,2,2,3], k = 2输出: [1,2] 示例 2: 输入: nums = [1], k = 1输出: [1] 提示: 1 <= nums.length <= 105 k的取值范围是[1, 数组中不相同的元素的个数] 题目数据保证答案唯一,换句话说,数组中前k个高频元素的集合是唯一的 进阶:所设计算法的时间复杂度 必须 优于,其中是数组大小。 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/g5c51o 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。 思路 使用HashMap先统计数字出现的次数。然后考虑使用大顶堆来统计前频繁出现的数字。 class Solution { public int[] topKFrequent(int[] nums, int k) { Map<Integer, Integer> map = ...
剑指 Offer 26. 树的子结构
发表于2022-03-06|计算机|LeetCode•剑指Offer
输入两棵二叉树A和B,判断B是不是A的子结构。(约定空树不是任意一个树的子结构) B是A的子结构, 即A中有出现和B相同的结构和节点值。 例如: 给定的树A: 3 / \ 4 5 / \1 2 给定的树 B: 4 /1 返回 true,因为B与A的一个子树拥有相同的结构和节点值。 示例 1: 输入:A = [1,2,3], B = [3,1]输出:false 示例 2: 输入:A = [3,4,5,1,2], B = [4,1]输出:true 限制: 0 <= 节点个数 <= 10000 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/shu-de-zi-jie-gou-lcof 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。 思路 递归搜索。B为空匹配成功,A为空匹配失败。若B不为根,当且节点又匹配失败,直接返回false。若B与当前节点匹配成功,那么A的左右孩子与B的左右孩子一定匹配成功,或者B与当前节点的左右子树匹配成功。 class Solution { ...
LeetCode 529. 扫雷游戏
发表于2022-03-06|计算机|LeetCode
让我们一起来玩扫雷游戏! 给你一个大小为m x n二维字符矩阵board,表示扫雷游戏的盘面,其中: 'M'代表一个 未挖出的 地雷, 'E'代表一个 未挖出的 空方块, 'B'代表没有相邻(上,下,左,右,和所有4个对角线)地雷的 已挖出的 空白方块, 数字('1' 到'8')表示有多少地雷与这块 已挖出的 方块相邻, 'X'则表示一个 已挖出的 地雷。 给你一个整数数组click,其中click = [clickr, clickc]表示在所有未挖出的方块('M'或者'E')中的下一个点击位置(clickr是行下标,clickc是列下标)。 根据以下规则,返回相应位置被点击后对应的盘面: 如果一个地雷('M')被挖出,游戏就结束了- 把它改为'X'。 如果一个 没有相邻地雷 的空方块('E')被挖出,修改它为('B'),并且所有和其相邻的 未挖出 方块都应该被递归地揭露。 如果一个 至少与一个地雷相邻 的空方块('E')被挖出,修改它为数字('1'到'8'),表示相邻地雷的数量。 如果在此次点击中,若无更多方块可被揭露,则返回盘面。 示例 1: 输入:board = [["E"," ...
LeetCode 517. 超级洗衣机
发表于2022-03-06|计算机|LeetCode
假设有n台超级洗衣机放在同一排上。开始的时候,每台洗衣机内可能有一定量的衣服,也可能是空的。 在每一步操作中,你可以选择任意m(1 <= m <= n)台洗衣机,与此同时将每台洗衣机的一件衣服送到相邻的一台洗衣机。 给定一个整数数组machines代表从左至右每台洗衣机中的衣物数量,请给出能让所有洗衣机中剩下的衣物的数量相等的 最少的操作步数 。如果不能使每台洗衣机中衣物的数量相等,则返回-1。 示例 1: 输入:machines = [1,0,5] 输出:3 解释: 第一步: 1 0 <-- 5 => 1 1 4 第二步: 1 <-- 1 <-- 4 => 2 1 3 第三步: 2 1 <-- 3 => 2 2 2 示例 2: 输入:machines = [0,3,0] 输出:2 解释: 第一步: 0 <-- 3 0 => 1 2 0 第二步: 1 2 --> 0 ...
LeetCode 1219. 黄金矿工
发表于2022-03-05|计算机|LeetCode
你要开发一座金矿,地质勘测学家已经探明了这座金矿中的资源分布,并用大小为m * n的网格grid进行了标注。每个单元格中的整数就表示这一单元格中的黄金数量;如果该单元格是空的,那么就是0。 为了使收益最大化,矿工需要按以下规则来开采黄金: 每当矿工进入一个单元,就会收集该单元格中的所有黄金。 矿工每次可以从当前位置向上下左右四个方向走。 每个单元格只能被开采(进入)一次。 不得开采(进入)黄金数目为0的单元格。 矿工可以从网格中 任意一个 有黄金的单元格出发或者是停止。 示例 1: 输入:grid = [[0,6,0],[5,8,7],[0,9,0]] 输出:24 解释: [[0,6,0], [5,8,7], [0,9,0]] 一种收集最多黄金的路线是:9 -> 8 -> 7。 示例 2: 输入:grid = [[1,0,7],[2,0,6],[3,4,5],[0,3,0],[9,0,20]] 输出:28 解释: [[1,0,7], [2,0,6], [3,4,5], [0,3,0], [9,0,20]] 一种收集最多黄金的路线是:1 -> 2 -> 3 -& ...
1…91011…13
avatar
Thomas
一个人的命运,当然要靠自我奋斗,但是也要考虑到历史的行程。
文章
129
标签
29
分类
4
Homepage
最新文章
Notes on PL 16 - De Bruijn, Combinators and Encodings2025-02-14
Notes on PL 15 - Fixed-Point Combinators2025-02-07
Notes on PL 14 - Lambda Calculus Encodings2025-01-31
Notes on PL 13 - Lambda Calculus Continued2025-01-24
Notes on PL 12 - Lambda Calculus2025-01-17
标签
CMake 杂项 数据结构与算法 计算机组成原理 Linux 深度学习 大数据 Programming Language 机器学习系统 操作系统 诗词 机器学习 计算机网路 LLDB 这就是生活 软件工程 编译原理 spring c++ LeetCode 高等数学 组合数学 java LLVM 软件开发 剑指Offer Hadoop 自然语言处理 AcWing算法基础
网站资讯
文章数目 :
129
本站总字数 :
191.7k
本站访客数 :
本站总访问量 :
最后更新时间 :
访客地图
©2019 - 2025 By Thomas
搜索
数据库加载中