
leetcode刷题
文章平均质量分 64
eeeeeeeeethan
这个作者很懒,什么都没留下…
展开
-
855. 考场就座
855. 考场就座原创 2023-02-16 13:17:30 · 428 阅读 · 0 评论 -
1997. 访问完所有房间的第一天
1997. 访问完所有房间的第一天原创 2023-02-15 11:43:40 · 443 阅读 · 0 评论 -
1124. 表现良好的最长时间段
1124. 表现良好的最长时间段原创 2023-02-14 13:50:14 · 392 阅读 · 0 评论 -
1115. 交替打印FooBar
题目描述我们提供一个类:class FooBar { public void foo() { for (int i = 0; i < n; i++) { print("foo"); } } public void bar() { for (int i = 0; i < n; i++) { print("bar"); } }}两个不同的线程将会共用一个 FooBar 实例。其中一个线程将会调用 foo() 方法,另原创 2021-04-30 23:40:42 · 351 阅读 · 1 评论 -
204. 计数质数
204. 计数质数统计所有小于非负整数 n 的质数的数量。思路利用埃筛得到小于n的所有质数:对于每个质数i,剔除所有以它为倍数的数,如质数2,剔除4,6,8,…,然后i++直到得到下一个质数3,再剔除6,9,13,…,最终到达i == n-1退出循环。class Solution { public int countPrimes(int n) { int count = 0; boolean[] isPrime = new boolean[n];原创 2021-01-05 11:51:34 · 108 阅读 · 0 评论 -
221. 最大正方形
设置二维数组dp。dp[i][j]表示以[i][j]为右下角的全1正方形的最大边长。观察发现,当matrix[i][j] == 0时dp[i][j] = 0;当matrix[i][j] == '1'时状态转移方程dp[i][j] = min {dp[i][j-1], dp[i-1][j], dp[i-1][j-1]} + 1,即当前位置的左、上以及左上能构成的最大正方形的边长+1。实现代码如下:...原创 2020-05-08 13:28:51 · 163 阅读 · 0 评论 -
分治算法
分治法的思想许多算法的结构是递归的:为了解决一个给定的问题,算法一次或多次递归地调用自身以解决紧密相关的若干子问题。这些算法典型地遵循分治法的思想:将原问题分解为几个规模较小但类似于原问题的子问题,递归地求解这些子问题,然后合并这些子问题的解来建立原问题的解。分治模式在每层递归都有三个步骤:分解原问题为若干子问题,这些子问题是原问题规模较小的实例;解决这些子问题,递归地求解各子问题,当子...原创 2019-12-07 12:06:06 · 318 阅读 · 0 评论 -
滑动窗口相关概念和习题集
概念“滑动窗口”(sliding window)这一概念大概源自计算机网络,数据链路层的可靠传输对数据帧的传送进行流量控制和差错检验。发送方和接收方均维护一定大小的滑动窗口,对于发送方,只有在滑动窗口范围内的数据帧才可以发送;对于接收方,只有在滑动窗口范围内的数据帧才可以接受。根据双方滑动窗口的大小,又可以将滑动窗口协议分为停止等待协议、后退N帧协议、选择重传协议。1. 停止等待协议发送方、...原创 2019-12-01 00:26:57 · 1673 阅读 · 0 评论 -
蓄水池抽样算法
蓄水池抽样(Reservoir Sampling)是一种从数据流中随机选出若干个不重复数据的抽样方法。这个方法的特点是:数据流的长度很大且未知,不能将这些数据全部放进内存。数据只能被遍历一次而不能重复遍历。简单算法维护一个一个大小为k的蓄水池,最初包含数据流中前k个数据。然后遍历数据流的剩余数据。设数组索引从1开始,当遍历到第 i 个数据时,生成一个随机数字 j,随机数的范围为 1 ...原创 2019-11-20 23:22:48 · 375 阅读 · 0 评论 -
89.格雷编码
题目描述格雷编码是一个二进制数字系统,在该系统中,两个连续的数值仅有一个位数的差异。给定一个代表编码总位数的非负整数 n,打印其格雷编码序列。格雷编码序列必须以 0 开头。示例 1:输入: 2输出: [0,1,3,2]解释:00 - 001 - 111 - 310 - 2对于给定的 n,其格雷编码序列并不唯一。例如,[0,2,3,1] 也是一个有效的格雷编码序列。00 -...原创 2019-11-08 10:27:16 · 206 阅读 · 0 评论 -
669. 修剪二叉搜索树
题目描述给定一个二叉搜索树,同时给定最小边界L 和最大边界 R。通过修剪二叉搜索树,使得所有节点的值在[L, R]中 (R>=L) 。你可能需要改变树的根节点,所以结果应当返回修剪好的二叉搜索树的新的根节点。算法分析对于二叉搜索树的一个结点,它的左子树的所有结点的值均小于该结点的值,它的右子树的结点的值均大于该结点的值。故每当遇到一个结点:如果它的值大于右边界,则放弃根节点和右子树...原创 2019-11-01 11:51:31 · 182 阅读 · 0 评论 -
105. 从前序与中序遍历序列构造二叉树的递归与非递归解法
根据一棵树的前序遍历与中序遍历构造二叉树。注意:你可以假设树中没有重复的元素。例如,给出前序遍历 preorder = [3,9,20,15,7]中序遍历 inorder = [9,3,15,20,7]题目分析根据前序遍历和中序遍历两个数组构造二叉树,观察可知,中序遍历的第一个结点为前序遍历中最左边的结点,故可以根据前序遍历一直构造左子树直到preorder[i]==inorder[...原创 2019-10-30 13:29:45 · 540 阅读 · 0 评论 -
回溯算法
回溯算法定义回溯算法实际上一个类似枚举的搜索尝试过程,主要是在搜索尝试过程中寻找问题的解,当发现已不满足求解条件时,就“回溯”返回,尝试别的路径。回溯法是一种选优搜索法,按选优条件向前搜索,以达到目标。但当探索到某一步时,发现原先选择并不优或达不到目标,就退回一步重新选择,这种走不通就退回再走的技术为回溯法,而满足回溯条件的某个状态的点称为“回溯点”。784.字母大小写全排列题目描述给定...原创 2019-10-29 10:00:19 · 200 阅读 · 0 评论 -
792. 匹配子序列的单词数
给定字符串 S 和单词字典 words, 求 words[i] 中是 S 的子序列的单词个数。示例:输入:S = “abcde”words = [“a”, “bb”, “acd”, “ace”]输出: 3解释: 有三个是 S 的子序列的单词: “a”, “acd”, “ace”。注意:所有在words和 S 里的单词都只由小写字母组成。S 的长度在 [1, 50000]。wor...原创 2019-11-02 09:55:51 · 498 阅读 · 0 评论 -
广度优先搜索和深度优先搜索
定义广度优先搜索(Breadth-First Search)算法属于一种盲目搜寻法,目的是系统地展开并检查图中的所有节点,以找寻结果。换句话说,它并不考虑结果的可能位置,彻底地搜索整张图,直到找到结果为止。广度优先搜索一般需要队列的配合实现。典型的广度优先搜索例子有:拓扑排序、树的层序遍历。题目207. 课程表现在你总共有 n 门课需要选,记为 0 到 n-1。在选修某些课程之前需要一些...原创 2019-11-05 09:59:03 · 945 阅读 · 0 评论 -
动态规划题集
题目描述338. 比特位计数给定一个非负整数 num。对于 0 ≤ i ≤ num 范围中的每个数字 i ,计算其二进制数中的 1 的数目并将它们作为数组返回。示例 1:输入: 2输出: [0,1,1]示例 2:输入: 5输出: [0,1,1,2,1,2]思路及代码解法一观察各数字的二进制代码:0 = 01 = 12 = 103 = 114 = 1005 = 10...原创 2019-12-13 11:36:18 · 435 阅读 · 1 评论 -
227. 基本计算器 II
题目描述实现一个基本的计算器来计算一个简单的字符串表达式的值。字符串表达式仅包含非负整数,+, - ,*,/ 四种运算符和空格 。 整数除法仅保留整数部分。示例 1:输入: “3+2*2”输出: 7示例 2:输入: " 3/2 "输出: 1示例 3:输入: " 3+5 / 2 "输出: 5思路分析1.将中缀表达式转为后缀表达式2.计算后缀表达式中缀表达式转后缀表达式...原创 2019-12-08 20:53:14 · 325 阅读 · 0 评论