算法
文章平均质量分 83
刷题以及参赛心得
Descosmos
E-mail descosmos@163.com
展开
-
刷题计划——双指针算法(二)
209.长度最小的子数组(中等)题目:给定一个含有 n 个正整数的数组和一个正整数 s ,找出该数组中满足其和 ≥ s 的长度最小的 连续 子数组,并返回其长度。如果不存在符合条件的子数组,返回 0。示例:输入:s = 7, nums = [2,3,1,2,4,3]输出:2解释:子数组 [4,3] 是该条件下的长度最小的子数组。 进阶:如果你已经完成了 O(n) 时间复杂度的解法, 请尝试 O(n log n) 时间复杂度的解法。同许多寻求子数组或者子串的题目一样,双指针法普遍都原创 2020-07-28 12:31:01 · 237 阅读 · 0 评论 -
刷题计划——位算法(一)
461. 汉明距离(简单)题目:两个整数之间的汉明距离指的是这两个数字对应二进制位不同的位置的数目。给出两个整数 x 和 y,计算它们之间的汉明距离。注意:0 ≤ x, y < 231示例:输入: x = 1, y = 4输出: 2解释:1 (0 0 0 1)4 (0 1 0 0) ↑ ↑上面的箭头指出了对应二进制位不同的位置。有...原创 2020-05-07 23:16:03 · 437 阅读 · 0 评论 -
刷题计划——深度优先搜索(二)
面试题36. 二叉搜索树与双向链表(中等)题目:输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的循环双向链表。要求不能创建任何新的节点,只能调整树中节点指针的指向。为了让您更好地理解问题,以下面的二叉搜索树为例:我们希望将这个二叉搜索树转化为双向循环链表。链表中的每个节点都有一个前驱和后继指针。对于双向循环链表,第一个节点的前驱是最后一个节点,最后一个节点的后继是第一个节点。下图展示...原创 2020-05-06 08:57:49 · 259 阅读 · 0 评论 -
刷题计划——栈算法(三)
150. 逆波兰表达式求值(中等)题目:根据逆波兰表示法,求表达式的值。有效的运算符包括 +, -, *, / 。每个运算对象可以是整数,也可以是另一个逆波兰表达式。说明:整数除法只保留整数部分;给定逆波兰表达式总是有效的。换句话说,表达式总会得出有效数值且不存在除数为 0 的情况。示例 1:输入: ["2", "1", "+", "3", "*"]输出: 9解释: ((...原创 2020-05-03 18:08:39 · 222 阅读 · 0 评论 -
刷题计划——动态规划dynamic programming(四)
322. 零钱兑换(中等)题目:给定不同面额的硬币 coins 和一个总金额 amount。编写一个函数来计算可以凑成总金额所需的最少的硬币个数。如果没有任何一种硬币组合能组成总金额,返回 -1。示例 1:输入: coins = [1, 2, 5], amount = 11输出: 3 解释: 11 = 5 + 5 + 1示例 2:输入: coins = [2], amount ...原创 2020-05-02 11:20:19 · 307 阅读 · 0 评论 -
刷题计划——回溯法(一)
47. 全排列(中等)题目:给定一个没有重复数字的序列,返回其所有可能的全排列。示例:输入: [1,2,3]输出:[ [1,2,3], [1,3,2], [2,1,3], [2,3,1], [3,1,2], [3,2,1]]作为一道经典的回溯法题目,全排列的问题时回溯法入门的基础。首先,给定一个没有重复数字,总长为N的序列,其可能的排列组合为ANN−1...原创 2020-04-26 22:43:18 · 340 阅读 · 0 评论 -
刷题计划——深度优先搜索DFS(一)
面试题13. 机器人的运动范围(中等)题目:地上有一个m行n列的方格,从坐标 [0,0] 到坐标 [m-1,n-1] 。一个机器人从坐标 [0, 0] 的格子开始移动,它每次可以向左、右、上、下移动一格(不能移动到方格外),也不能进入行坐标和列坐标的数位之和大于k的格子。例如,当k为18时,机器人能够进入方格 [35, 37] ,因为3+5+3+7=18。但它不能进入方格 [35, 38],因...原创 2020-04-25 22:38:45 · 266 阅读 · 0 评论 -
刷题计划——动态规划dynamic programming(三)
96. 不同的二叉搜索树(中等)题目:给定一个整数 n,求以 1 … n 为节点组成的二叉搜索树有多少种?示例:输入: 3输出: 5解释:给定 n = 3, 一共有 5 种不同结构的二叉搜索树: 1 3 3 2 1 \ / / / \ \ 3 2 1 ...原创 2020-02-26 18:04:57 · 214 阅读 · 0 评论 -
刷题计划——动态规划dynamic programming(二)
1139.最大的以1为边界的正方形题目:给你一个由若干 0 和 1 组成的二维网格 grid,请你找出边界全部由 1 组成的最大 正方形 子网格,并返回该子网格中的元素数量。如果不存在,则返回 0。示例 1:输入:grid = [[1,1,1],[1,0,1],[1,1,1]]输出:9示例 2:输入:grid = [[1,1,0,0]]输出:1提示:1 <= gr...原创 2020-02-19 19:19:39 · 344 阅读 · 0 评论 -
刷题计划——动态规划dynamic programming(一)
120.三角形最小路径和(中等)题目:给定一个三角形,找出自顶向下的最小路径和。每一步只能移动到下一行中相邻的结点上。例如,给定三角形:[ [2], [3,4], [6,5,7], [4,1,8,3]]自顶向下的最小路径和为 11(即,2 + 3 + 5 + 1 = 11)。将该三角形用二维数组表示[ [2], [3, 4], [6, 5, 7...原创 2020-02-13 18:57:48 · 208 阅读 · 0 评论 -
刷题计划——栈算法(二)
921.使括号有效的最少添加(简单)题目:给定一个由 ‘(’ 和 ‘)’ 括号组成的字符串 S,我们需要添加最少的括号( ‘(’ 或是 ‘)’,可以在任何位置),以使得到的括号字符串有效。从形式上讲,只有满足下面几点之一,括号字符串才是有效的:它是一个空字符串,或者它可以被写成 AB (A 与 B 连接), 其中 A 和 B 都是有效字符串,或者它可以被写作 (A),其中 A 是有效字...原创 2020-02-10 21:11:34 · 406 阅读 · 0 评论 -
刷题计划——栈算法(一)
232.用栈实现队列(简单)题目:使用栈实现队列的下列操作:push(x) – 将一个元素放入队列的尾部。pop() – 从队列首部移除元素。peek() – 返回队列首部的元素。empty() – 返回队列是否为空。示例:MyQueue queue = new MyQueue();queue.push(1);queue.push(2); queue.peek(); ...原创 2020-02-05 18:22:32 · 303 阅读 · 0 评论 -
刷题计划——双指针算法(一)
双指针算法(一)leetcode上的一些能用双指针办法解决的算法题题解86.分割链表(中等)题目:给定一个链表和一个特定值 x,对链表进行分隔,使得所有小于 x 的节点都在大于或等于 x 的节点之前。你应当保留两个分区中每个节点的初始相对位置。示例:输入: head = 1->4->3->2->5->2, x = 3输出: 1->2->2-...原创 2020-02-03 21:49:55 · 367 阅读 · 0 评论