![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
面试准备_LC
文章平均质量分 52
lc
爱敲代码的Jerry
这个作者很懒,什么都没留下…
展开
-
力扣139. 单词拆分
题目链接题目给定一个非空字符串 s 和一个包含非空单词的列表 wordDict,判定 s 是否可以被空格拆分为一个或多个在字典中出现的单词。说明拆分时可以重复使用字典中的单词。你可以假设字典中没有重复的单词。分析:最暴力的想法是直接搜索,枚举每一段看看是否有对应的单词,复杂度O(2^n)采用动态规划的方法:状态表示:f[i]表示前i个字符是否可以拆分成字典中的单词状态转移:如果 1 ~ i之间的某个位置j可以满足f[j] = true并且j + 1 ~ i这一段是一个原创 2021-03-03 13:01:16 · 108 阅读 · 0 评论 -
力扣138. 复制带随机指针的链表
题目链接给你一个长度为 n 的链表,每个节点包含一个额外增加的随机指针 random ,该指针可以指向链表中的任何节点或空节点。构造这个链表的 深拷贝。 深拷贝应该正好由 n 个 全新 节点组成,其中每个新节点的值都设为其对应的原节点的值。新节点的 next 指针和 random 指针也都应指向复制链表中的新节点,并使原链表和复制链表中的这些指针能够表示相同的链表状态。复制链表中的指针都不应指向原链表中的节点 。例如,如果原链表中有 X 和 Y 两个节点,其中 X.random --> Y 。原创 2021-03-03 12:55:04 · 678 阅读 · 0 评论 -
力扣137. 只出现一次的数字 II
题目链接给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现了三次。找出那个只出现了一次的元素。说明:你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗?分析:这题不像上一题,出现两次直接异或就抵消了,异或三次结果和异或一次是一样的。可以采用状态机的思想,用两个变量one two当数字x的某一位是1并且出现一次,one的对应位变1,two的对应位为0当数字x的某一位是1并且出现两次,one的对应位变0,two的对应位变1当数字x的某一位是1并且出现三次,原创 2021-03-03 12:52:42 · 97 阅读 · 0 评论 -
力扣136. 只出现一次的数字
题目链接给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。说明:你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗?输入: [2,2,1]输出: 1分析:如果他不要求不使用额外空间,我们可以开一个哈希表来存,然后扫一遍看看出现几次就行了。如果他不要求线性复杂度,那么两次循环也找出来了。现在都要求,那么就需要用异或^的性质了异或的特点是相同为0,不同为1,那么两个相同的数异或就是0,只有一个元素出现一次,其余的都出现原创 2021-03-02 12:45:39 · 91 阅读 · 0 评论 -
力扣135. 分发糖果
题目链接老师想给孩子们分发糖果,有 N 个孩子站成了一条直线,老师会根据每个孩子的表现,预先给他们评分。你需要按照以下要求,帮助老师给这些孩子分发糖果:每个孩子至少分配到 1 个糖果。评分更高的孩子必须比他两侧的邻位孩子获得更多的糖果。那么这样下来,老师至少需要准备多少颗糖果呢?输入:[1,0,2]输出:5解释:你可以分别给这三个孩子分发 2、1、2 颗糖果。分析:题目的要求就是给每个位置一个数字,满足至少是1且如果当前权值如果大于两侧权值,那当前数字也要大于旁边数字。就是一原创 2021-03-02 12:41:12 · 98 阅读 · 0 评论 -
力扣134. 加油站
题目链接在一条环路上有 N 个加油站,其中第 i 个加油站有汽油 gas[i] 升。你有一辆油箱容量无限的的汽车,从第 i 个加油站开往第 i+1 个加油站需要消耗汽油 cost[i] 升。你从其中的一个加油站出发,开始时油箱为空。如果你可以绕环路行驶一周,则返回出发时加油站的编号,否则返回 -1。说明:如果题目有解,该答案即为唯一答案。输入数组均为非空数组,且长度相同。输入数组中的元素均为非负数。输入:gas = [1,2,3,4,5]cost = [3,4,5,1,2]输出原创 2021-03-02 12:32:09 · 90 阅读 · 0 评论 -
力扣133. 克隆图
原题链接题目过长,不复制了简单来说就是给个图,然后让完全复制一份,不能引用原来的结点,就是不能直接return原来的node,也不能新创建一个node把临边赋值一份就算完。分析:这直接dfs一遍或者bfs一遍就行了,第一种思路是先创建结点,然后用一个哈希表去把原结点和复制结点一一对应,在跑一边,把边连上即可。另一种思路是同时复制边和点。/*// Definition for a Node.class Node { public int val; public List&原创 2021-03-01 17:40:56 · 135 阅读 · 0 评论 -
力扣132. 分割回文串 II
题目链接给定一个字符串 s,将 s 分割成一些子串,使每个子串都是回文串。返回符合要求的最少分割次数。输入: "aab"输出: 1解释: 进行一次分割就可将 s 分割成 ["aa","b"] 这样两个回文子串。分析:如果按照上一题的写法,应该是求出来所有方案,然后求一下每个List中的元素个数,取一个min再减一就是答案。但是我估计大概率超时。思路:通过dp,用 dp[i] 表示前 i 个数分割成每个子串都是回文串至少分出多少个(即答案数 + 1)状态转移:可以枚举 i 前面的点原创 2021-03-01 17:26:33 · 114 阅读 · 0 评论 -
力扣131. 分割回文串
题目链接给定一个字符串 s,将 s 分割成一些子串,使每个子串都是回文串。返回 s 所有可能的分割方案。输入: "aab"输出:[ ["aa","b"], ["a","a","b"]]分析:最坏的情况是所有字母都相同,类似于aaaaaaaa,那么这8个a就有七个位置可以插入,因为全都一样,所以无论怎么分割都满足每个子串都是回文串,那结果就有2^n种。所以最坏情况是指数级别。那可以直接搜索。搜索思路:按找每一段来搜索,起点为u,终点从u枚举到最后,如果能形成回文串,那就是一种原创 2021-03-01 17:07:51 · 101 阅读 · 0 评论 -
《LeetCode面试刷题》第二篇
题目:1. 第79题 单词搜索2. 第80题 删除排序数组中的重复项 II3. 第81题 搜索旋转排序数组 II4. 第82题 删除排序链表中的重复元素 II5. 第83题 删除排序链表中的重复元素6. 第84题 柱状图中最大的矩形7. 第85题 最大矩形8. 第86题 分隔链表9. 第87题 扰乱字符串10. 第88题 合并两个有序数组11. 第89题 格雷编码1. 第79题 单词搜索题目地址给定一个二维网格和一个单词,找出该单词是否存在于网格中。单词必须按照字母顺序,通过相邻的单元格内的字母构原创 2021-02-20 13:50:24 · 188 阅读 · 1 评论 -
《LeetCode面试刷题》第一篇
题目:1. 第73题 矩阵置零2. 第75题 颜色分类3. 第78题 子集1. 第73题 矩阵置零题目地址给定一个 m x n 的矩阵,如果一个元素为 0,则将其所在行和列的所有元素都设为 0。请使用原地算法。这题如果不适用原地算法非常简单,可以用做初学者的数组练习题,直接开一个n * m的矩阵,然后让它的元素和原数组完全对应,之后遍历原数组的每一个元素,如果是0在新数组改变对应行列的元素即可。(时空复杂度较高)如果空间复杂度压缩到O(n + m)的话,我们只需要开两个一维数组,记录行列是否存原创 2021-02-19 16:51:11 · 111 阅读 · 1 评论