自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(83)
  • 资源 (1)
  • 收藏
  • 关注

原创 2021-8-10

8-10题目:39. 组合总和 (回溯)这个题目很典型,但是忘了怎么去做了,需要好好看看

2021-08-10 17:02:08 116

原创 2021-08-08

题目:152. 乘积最大子数组https://leetcode-cn.com/problems/maximum-product-subarray/注意的地方:错误代码:class Solution { public int maxProduct(int[] nums) { int n = nums.length; int max[] = new int[n]; int min[] = new int[n];

2021-08-08 14:31:37 111

原创 2021-07-11-171. Excel表列序号

171. Excel表列序号进制转换

2021-07-11 12:40:24 122

原创 丑数 过

两道题目丑数超级丑数没想到这题还能用DP,第二道处理重复值上需要借鉴思考

2021-04-11 23:30:22 72

转载 2021-04-04

小船过河(贪心算法)隽永啊 2019-05-02 19:53:51 1611 已收藏 4版权题目只有一艘船,最多能乘2人,船的运行速度为2人中较慢一人的速度,过去后还需一个人把船划回来,问把n个人运到对岸,最少需要多久。输入:41 2 5 10输出:17思考1.因为考虑到需要一个人把船划回来,所以我们可以用速度最快的人把其他人带到对岸。A B…C DAC-><-AAD-><-A运输成本:2A+C+D2.因为考虑到船往对岸划时,时间为两人中速..

2021-04-04 23:04:47 59

原创 好题整理1 过

好题整理 1题目560. 和为K的子数组437. 路径总和 III分析这个两个题目的最优解都用到了前缀和的性质,很巧妙

2021-03-10 13:52:21 64

原创 1145. 二叉树着色游戏

1145. 二叉树着色游戏题目有两位极客玩家参与了一场「二叉树着色」的游戏。游戏中,给出二叉树的根节点 root,树上总共有 n 个节点,且 n 为奇数,其中每个节点上的值从 1 到 n 各不相同。游戏从「一号」玩家开始(「一号」玩家为红色,「二号」玩家为蓝色),最开始时,「一号」玩家从 [1, n] 中取一个值 x(1 <= x <= n);「二号」玩家也从 [1, n] 中取一个值 y(1 <= y <= n)且 y != x。「一号」玩家给值为 x 的节点染上红色,

2021-01-21 16:47:06 227

转载 438. 找到字符串中所有字母异位词

找到字符串中所有字母异位词

2020-12-31 16:40:42 65

原创 15. 三数之和

15. 三数之和题目给你一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?请你找出所有满足条件且不重复的三元组。注意:答案中不可以包含重复的三元组。示例给定数组 nums = [-1, 0, 1, 2, -1, -4],满足要求的三元组集合为:[[-1, 0, 1],[-1, -1, 2]]分析这个题目的难点在于去重,之前我的做法是:先对于每两个数,求他们的和,存在map里,全部做完之后,遍历原始数组,对于每

2020-12-26 23:15:35 114

原创 146. LRU 缓存机制 过

146. LRU 缓存机制题目运用你所掌握的数据结构,设计和实现一个 LRU (最近最少使用) 缓存机制 。实现 LRUCache 类:LRUCache(int capacity) 以正整数作为容量 capacity 初始化 LRU 缓存int get(int key) 如果关键字 key 存在于缓存中,则返回关键字的值,否则返回 -1 。void put(int key, int value) 如果关键字已经存在,则变更其数据值;如果关键字不存在,则插入该组「关键字-值」。当缓存容量达到上限

2020-11-22 23:07:30 92

原创 222. 完全二叉树的节点个数

222. 完全二叉树的节点个数题目给出一个完全二叉树,求出该树的节点个数。说明:完全二叉树的定义如下:在完全二叉树中,除了最底层节点可能没填满外,其余每层节点数都达到最大值,并且最下面一层的节点都集中在该层最左边的若干位置。若最底层为第 h 层,则该层包含 1~ 2h 个节点。示例:输入:1/ 2 3/ \ /4 5 6输出: 6思路最直接的思路是统计左子树节点的数量,再统计右子树节点的数量,然后加起来,时间复杂度是O(N)的。但是这不是最优的思路最优的思路是:充分利用

2020-11-22 20:49:28 223

原创 题目杂记(二)

题目杂记(二)题目1题目给定一个有序数组arr,从左到右依次表示X轴上从左往右点的位置。给定一个正整数K,返回如果有一根长度为K的绳子,最多能盖住几个点?绳子的边缘点碰到X轴上的点,也算盖住题目2题目3题目题目4题目长度为N的数组arr,一定可以组成N^2个数值对。例如arr = [3,1,2],数值对有(3,3) (3,1) (3,2) (1,3) (1,1) (1,2) (2,3) (2,1) (2,2),也就是任意两个数都有数值对,而且自己和自己也算数值对。数值对怎么排

2020-11-15 22:00:07 233

原创 240. 搜索二维矩阵 II 和74. 搜索二维矩阵

240. 搜索二维矩阵 II 和74. 搜索二维矩阵

2020-11-15 21:56:29 174

原创 1139. 最大的以 1 为边界的正方形

1139. 最大的以 1 为边界的正方形

2020-11-15 21:53:36 162

原创 32. 最长有效括号

32. 最长有效括号

2020-11-15 21:52:21 73

原创 347. 前 K 个高频元素

347. 前 K 个高频元素题目给定一个非空的整数数组,返回其中出现频率前 k 高的元素。示例 1:输入: nums = [1,1,1,2,2,3], k = 2输出: [1,2]提示:你可以假设给定的 k 总是合理的,且 1 ≤ k ≤ 数组中不相同的元素的个数。你的算法的时间复杂度必须优于 O(n log n) , n 是数组的大小。题目数据保证答案唯一,换句话说,数组中前 k 个高频元素的集合是唯一的。你可以按任意顺序返回答案。思路有一种直接的思路是,统计每个数字出现的次数,然

2020-11-15 11:08:24 122

原创 小技巧

小技巧记录一点学来的小技巧。笔试的算法题,都是在单机上跑的,一般来说,对于java,给的时间是2-4ms,大概是10^8到10 ^9个常数操作的时间。对于一道题,一般来说会有输入规模,假设想用的算法是O(N ^2)的,而N是10 ^6,那么,很可能会超时的。所以可能需要时间复杂度更小的算法。这应该算是一个提示吧。...

2020-11-12 23:51:58 115

原创 517. 超级洗衣机

517. 超级洗衣机题目假设有 n 台超级洗衣机放在同一排上。开始的时候,每台洗衣机内可能有一定量的衣服,也可能是空的。在每一步操作中,你可以选择任意 m (1 ≤ m ≤ n) 台洗衣机,与此同时将每台洗衣机的一件衣服送到相邻的一台洗衣机。给定一个非负整数数组代表从左至右每台洗衣机中的衣物数量,请给出能让所有洗衣机中剩下的衣物的数量相等的最少的操作步数。如果不能使每台洗衣机中衣物的数量相等,则返回 -1。示例 1:输入: [1,0,5]输出: 3解释:第一步: 1 0 &l

2020-11-12 23:47:13 113

原创 11. 盛最多水的容器

11. 盛最多水的容器

2020-11-12 23:26:08 60

原创 题目杂记(一)

题目杂记(一)记录一些暂时没找到出处的题目和解题思路题目1题目给定一个数组arr长度为N,你可以把任意长度大于0且小于N的前缀作为左部分,剩下的 作为右部分。但是每种划分下都有左部分的最大值和右部分的最大值,请返回最大的, 左部分最大值减去右部分最大值的绝对值。思路这道题不能被题目忽悠了,如果按照题目的意思去做,那么做出来的代码,应该是O(N^2)的。所以应该思考题目的真正含义。无论以那个数作为分界,左边子数组的最大值,不可能小于l(l表示数组最左边的值);同理,右边子数组的最大值,不可能小

2020-11-12 20:19:31 216

原创 资源限制类问题汇总

资源限制类问题汇总位图解决某一范围上数字的出现情况,并可以节省大量空间题目思路这题如果没有资源限制,那么最直观的思路就是使用哈希表来表示每个数字是否出现。40亿个数,哈希表最多需要40亿的空间,每个占4字节,共160亿字节空间,大概16GB内存。题目要求只能用不超过1GB的内存,那么可以用位图来代替哈希表,用一个2^32长度的bit位来作为哈希表,每个位上的元素为1,表示对应的元素出现过了;否则就是没出现。所需的内存空间就是(2 ^32)/8个字节,也就是2 ^29字节,536,870,912字

2020-11-10 13:58:05 339

原创 数组累加和问题三连

数组累加和问题三连第一题题目:给定一个全是正数的数组arr,一个目标数字target,求数组中满足和为target的最长子数组的长度思路:这是很简单的题目,用双指针和窗口就可以解决。具体见代码代码: public static int getMaxLength(int[] arr, int K) { if (arr == null || arr.length == 0 || K <= 0) { return 0; } int left = 0; int right

2020-11-09 20:33:15 823

原创 53. 最大子序和与152. 乘积最大子数组

53. 最大子序和与152. 乘积最大子数组这两道题有相似之处,所以放在了一起记录题目给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。示例:输入: [-2,1,-3,4,-1,2,1,-5,4]输出: 6解释: 连续子数组 [4,-1,2,1] 的和最大,为 6。思路可以用动态规划来做,设数组元素f[i]表示包含第i个元素的最大和的连续子数组,那么转移方程是f[i]=max(f[i−1]+A[i],A[i])f[i] = max(f[

2020-11-07 23:40:24 71

原创 120. 三角形最小路径和

120. 三角形最小路径和题目给定一个三角形,找出自顶向下的最小路径和。每一步只能移动到下一行中相邻的结点上。相邻的结点 在这里指的是 下标 与 上一层结点下标 相同或者等于 上一层结点下标 + 1 的两个结点。例如,给定三角形:自顶向下的最小路径和为 11(即,2 + 3 + 5 + 1 = 11)。思路这题是典型的动态规划题目,定义数组f[i][j]表示第i层第j个元素为终点时的路径和,转移方程为f[i][j]=Math.min(f[i−1][j−1],f[i−1][j])+A[i][

2020-11-07 20:48:18 53

原创 接雨水系列题目

接雨水系列题目leetcode上的两道接雨水的题目,一道是基础版的,另一道是进阶版的42. 接雨水407. 接雨水 II下面来看具体题目42. 接雨水题目给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。示例 1:输入:height = [0,1,0,2,1,0,1,3,2,1,2,1]输出:6解释:上面是由数组 [0,1,0,2,1,0,1,3,2,1,2,1] 表示的高度图,在这种情况下,可以接 6 个单位的雨水(蓝色部分表示雨水)

2020-11-07 20:27:05 403

原创 哈希问题

哈希问题记录一下哈希函数有关的问题哈希函数的一些性质这里面,重点是第五条。在上面的性质基础之上,可以延伸出一些更常用的性质。设哈希函数f(x),x表示输入,m表示一个数,对于随机给定的x,其f(x) mod m 得到的结果,也一定是均匀的。这是根据第五条性质可以得到的一个应用题目比如说,有一个40亿条数字的文件,每个数字按行存储,可使用的内容是1GB(指的是字节),求文件中出现次数最多的数字?思路:可以使用哈希表来表示每个数字出现的次数<key,value>,这里认为一个<

2020-11-07 18:12:35 508

原创 1458. 两个子序列的最大点积 过

1458. 两个子序列的最大点积题目给你两个数组 nums1 和 nums2 。请你返回 nums1 和 nums2 中两个长度相同的 非空 子序列的最大点积。数组的非空子序列是通过删除原数组中某些元素(可能一个也不删除)后剩余数字组成的序列,但不能改变数字间相对顺序。比方说,[2,3,5] 是 [1,2,3,4,5] 的一个子序列而 [1,5,3] 不是。示例 1:输入:nums1 = [2,1,-2,5], nums2 = [3,0,-6]输出:18解释:从 nums1 中得到子序列 [

2020-11-01 23:59:54 75

原创 139. 单词拆分

139. 单词拆分题目给定一个非空字符串 s 和一个包含非空单词的列表 wordDict,判定 s 是否可以被空格拆分为一个或多个在字典中出现的单词。说明:拆分时可以重复使用字典中的单词。你可以假设字典中没有重复的单词。示例 1:输入: s = “leetcode”, wordDict = [“leet”, “code”]输出: true解释: 返回 true 因为 “leetcode” 可以被拆分成 “leet code”。思路定义dp[i]表示前i个字符组成的字符串是否可以被拆分,

2020-11-01 23:42:43 88

原创 381. O(1) 时间插入、删除和获取随机元素 - 允许重复

381. O(1) 时间插入、删除和获取随机元素 - 允许重复题目设计一个支持在平均 时间复杂度 O(1) 下, 执行以下操作的数据结构。注意: 允许出现重复元素。insert(val):向集合中插入元素 val。remove(val):当 val 存在时,从集合中移除一个 val。getRandom:从现有集合中随机获取一个元素。每个元素被返回的概率应该与其在集合中的数量呈线性相关。示例:// 初始化一个空的集合。RandomizedCollection collection = new

2020-10-31 10:35:08 70

原创 二叉树的遍历

二叉树的遍历相关题目94. 二叉树的中序遍历

2020-10-29 11:08:50 45

原创 72. 编辑距离

72. 编辑距离

2020-10-29 11:07:01 92

原创 343. 整数拆分

343. 整数拆分

2020-10-29 11:05:51 57

原创 1105. 填充书架

1105. 填充书架

2020-10-29 11:05:13 73

原创 647. 回文子串

647. 回文子串

2020-10-29 11:04:06 46

原创 516. 最长回文子序列 VS 5. 最长回文子串

516. 最长回文子序列 VS 5. 最长回文子串

2020-10-29 11:03:29 51

原创 115. 不同的子序列

115. 不同的子序列

2020-10-29 11:00:16 45

原创 1024. 视频拼接

1024. 视频拼接

2020-10-29 10:59:08 99164

原创 312. 戳气球

312. 戳气球

2020-10-29 10:58:32 136 1

原创 87. 扰乱字符串

87. 扰乱字符串

2020-10-29 10:57:57 62

原创 44. 通配符匹配

44. 通配符匹配题目给定一个字符串 (s) 和一个字符模式 § ,实现一个支持 ‘?’ 和 ‘*’ 的通配符匹配。‘?’ 可以匹配任何单个字符。‘*’ 可以匹配任意字符串(包括空字符串)。两个字符串完全匹配才算匹配成功。说明:s 可能为空,且只包含从 a-z 的小写字母。p 可能为空,且只包含从 a-z 的小写字母,以及字符 ? 和 *。示例 1:输入:s = “aa”p = “a”输出: false解释: “a” 无法匹配 “aa” 整个字符串。示例 2:输入:s =

2020-10-24 21:23:06 223

黑客帝国屏幕保护程序

直接就可以运行的屏幕保护程序,运行之后按“ESC”键退出

2018-06-08

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除