leetcode
Wolf-Z
思想需要记录
展开
-
LeetCode鸡蛋掉落问题
问题描述你将获得 K 个鸡蛋,并可以使用一栋从 1 到 N 共有 N 层楼的建筑。每个蛋的功能都是一样的,如果一个蛋碎了,你就不能再把它掉下去。你知道存在楼层 F ,满足 0 <= F <= N 任何从高于 F 的楼层落下的鸡蛋都会碎,从 F 楼层或比它低的楼层落下的鸡蛋都不会破。每次移动,你可以取一个鸡蛋(如果你有完整的鸡蛋)并把它从任一楼层 X 扔下(满足 1 <=...原创 2019-07-30 14:43:55 · 658 阅读 · 0 评论 -
二叉树的最近公共祖先
问题描述给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。”例如,给定如下二叉树: root = [3,5,1,6,2,0,8,null,null,7,4]示例 1:输入: root = [3,...原创 2019-08-20 15:10:11 · 111 阅读 · 0 评论 -
二叉树的序列化与反序列化-困难
问题描述序列化是将一个数据结构或者对象转换为连续的比特位的操作,进而可以将转换后的数据存储在一个文件或者内存中,同时也可以通过网络传输到另一个计算机环境,采取相反方式重构得到原数据。请设计一个算法来实现二叉树的序列化与反序列化。这里不限定你的序列 / 反序列化算法执行逻辑,你只需要保证一个二叉树可以被序列化为一个字符串并且将这个字符串反序列化为原始的树结构。示例:你可以将以下二叉树: ...原创 2019-08-20 17:05:15 · 169 阅读 · 0 评论 -
划分为k个相等的子集
问题描述给定一个整数数组 nums 和一个正整数 k,找出是否有可能把这个数组分成 k 个非空子集,其总和都相等。示例 1:输入: nums = [4, 3, 2, 3, 5, 2, 1], k = 4输出: True说明: 有可能将其分成 4 个子集(5),(1,4),(2,3),(2,3)等于总和。 注意:1 <= k <= len(nums) <= 1...原创 2019-08-21 12:26:52 · 1110 阅读 · 0 评论 -
至少有k个重复字符的最长子串-动态规划
问题描述找到给定字符串(由小写字符组成)中的最长子串 T , 要求 T 中的每一字符出现次数都不少于 k 。输出 T 的长度。示例 1:输入:s = "aaabb", k = 3输出:3最长子串为 “aaa” ,其中 ‘a’ 重复了 3 次。示例 2:输入:s = "ababbc", k = 2输出:5最长子串为 “ababb” ,其中 ‘a’ 重复了 2 次, ...原创 2019-08-12 23:51:45 · 1075 阅读 · 0 评论 -
最长连续序列-动态规划
问题描述给定一个未排序的整数数组,找出最长连续序列的长度。在这里插入代码片要求算法的时间复杂度为 O(n)。示例:输入: [100, 4, 200, 1, 3, 2]输出: 4解释: 最长连续序列是 [1, 2, 3, 4]。它的长度为 4。解决思路1、将所有数组装进HashSet中,HashSet的查询时间复杂度为O(1)2、对数组中每一个元素进行检查3、如果没有小于当前元...原创 2019-08-13 11:47:26 · 378 阅读 · 0 评论 -
二叉树中的最大路径和-动态规划
问题描述给定一个非空二叉树,返回其最大路径和。本题中,路径被定义为一条从树中任意节点出发,达到任意节点的序列。该路径至少包含一个节点,且不一定经过根节点。示例 1:输入: [1,2,3] 1 / \ 2 3输出: 61+2+3=6示例 2:输入: [-10,9,20,null,null,15,7] -10 / \ 9 ...原创 2019-08-13 10:26:49 · 612 阅读 · 0 评论 -
矩阵中的最长递增路径-困难
问题描述给定一个整数矩阵,找出最长递增路径的长度。对于每个单元格,你可以往上,下,左,右四个方向移动。 你不能在对角线方向上移动或移动到边界外(即不允许环绕)。示例 1:输入: nums = [ [9,9,4], [6,6,8], [2,1,1]] 输出: 4 解释: 最长递增路径为 [1, 2, 6, 9]。示例 2:输入: nums = [ [3,4,5...原创 2019-08-17 13:55:51 · 923 阅读 · 0 评论 -
单词接龙-广度优先遍历
问题描述给定两个单词(beginWord 和 endWord)和一个字典,找到从 beginWord 到 endWord 的最短转换序列的长度。转换需遵循如下规则:每次转换只能改变一个字母。转换过程中的中间单词必须是字典中的单词。说明:如果不存在这样的转换序列,返回 0。所有单词具有相同的长度。所有单词只由小写字母组成。字典中不存在重复的单词。你可以假设 beginWord 和 ...原创 2019-08-17 17:24:03 · 448 阅读 · 0 评论 -
四数相加-二
问题描述给定四个包含整数的数组列表 A , B , C , D ,计算有多少个元组 (i, j, k, l) ,使得 A[i] + B[j] + C[k] + D[l] = 0。为了使问题简单化,所有的 A, B, C, D 具有相同的长度 N,且 0 ≤ N ≤ 500 。所有整数的范围在 -228 到 228 - 1 之间,最终结果不会超过 231 - 1 。例如:输入:A = [ ...原创 2019-08-20 09:24:22 · 209 阅读 · 0 评论 -
最长上升子序列-动态规划
问题描述给定一个无序的整数数组,找到其中最长上升子序列的长度。示例:输入: [10,9,2,5,3,7,101,18]输出: 4 解释: 最长的上升子序列是 [2,3,7,101],它的长度是 4。说明:可能会有多种最长上升子序列的组合,你只需要输出对应的长度即可。你算法的时间复杂度应该为 O(n2) 。进阶: 你能将算法的时间复杂度降低到 O(n log n) 吗?解题思路...原创 2019-08-14 21:49:45 · 185 阅读 · 0 评论 -
两个大数字相加(正数)-笔试
思路将两个数字从小数点处分开前段和后段分别相加处理小数点处的进位操作相加之后,和小数点拼接返回细节都在代码中注释代码实现import java.util.Scanner;public class Adder { /** * 两个大正数相加 * @param num1 * @param num2 * @return */ ...原创 2019-08-10 11:57:07 · 283 阅读 · 0 评论 -
单词拆分-动态规划-LeetCode
问题描述给定一个非空字符串 s 和一个包含非空单词列表的字典 wordDict,判定 s 是否可以被空格拆分为一个或多个在字典中出现的单词。说明:拆分时可以重复使用字典中的单词。你可以假设字典中没有重复的单词。示例 1:输入: s = “leetcode”, wordDict = [“leet”, “code”]输出: true解释: 返回 true 因为 “leetcode” 可...原创 2019-08-04 11:20:14 · 852 阅读 · 0 评论 -
LeetCode-回文串分割
问题描述给定一个字符串 s,将 s 分割成一些子串,使每个子串都是回文串。返回 s 所有可能的分割方案。示例:输入: "aab"输出:[ ["aa","b"], ["a","a","b"]]直接看代码package solution;import java.util.ArrayList;import java.util.List;class Soluti...原创 2019-08-04 11:27:19 · 167 阅读 · 0 评论 -
单词搜索2-LeetCode-困难
贼难问题描述给定一个二维网格 board 和一个字典中的单词列表 words,找出所有同时在二维网格和字典中出现的单词。单词必须按照字母顺序,通过相邻的单元格内的字母构成,其中“相邻”单元格是那些水平相邻或垂直相邻的单元格。同一个单元格内的字母在一个单词中不允许被重复使用。示例:输入: words = ["oath","pea","eat","rain"] and board =[...原创 2019-08-04 16:43:31 · 167 阅读 · 0 评论 -
乘积最大子序列-LeetCode
问题描述给定一个整数数组 nums ,找出一个序列中乘积最大的连续子序列(该序列至少包含一个数)。示例 1:输入: [2,3,-2,4]输出: 6解释: 子数组 [2,3] 有最大乘积 6。示例 2:输入: [-2,0,-1]输出: 0解释: 结果不能为 2, 因为 [-2,-1] 不是子数组。解决思路双层for循环第一层for循环i确定子序列起点第二层for循环确定...原创 2019-08-04 18:45:39 · 242 阅读 · 0 评论 -
前 K 个高频元素-LeetCode
前 K 个高频元素问题描述给定一个非空的整数数组,返回其中出现频率前 k 高的元素。示例 1:输入: nums = [1,1,1,2,2,3], k = 2输出: [1,2]示例 2:输入: nums = [1], k = 1输出: [1]说明:你可以假设给定的 k 总是合理的,且 1 ≤ k ≤ 数组中不相同的元素的个数。你的算法的时间复杂度必须优于 O(n log n...原创 2019-08-07 14:23:13 · 188 阅读 · 0 评论 -
复制带随机指针的链表-LeetCode
复制带随机指针的链表问题描述给定一个链表,每个节点包含一个额外增加的随机指针,该指针可以指向链表中的任何节点或空节点。要求返回这个链表的深拷贝。示例: 输入: {"$id":"1","next":{"$id":"2","next":null,"random":{"$ref":"2"},"val":2},"random":{"$ref":"2"},"val":1} ...原创 2019-08-07 18:47:39 · 183 阅读 · 0 评论 -
打家劫舍-动态规划
题目描述你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。给定一个代表每个房屋存放金额的非负整数数组,计算你在不触动警报装置的情况下,能够偷窃到的最高金额。示例 1:输入: [1,2,3,1]输出: 4解释: 偷窃 1 号房屋 (金额 = 1) ,然后偷...原创 2019-08-14 15:00:57 · 131 阅读 · 0 评论 -
完全平方数-动态规划
问题描述给定正整数 n,找到若干个完全平方数(比如 1, 4, 9, 16, …)使得它们的和等于 n。你需要让组成和的完全平方数的个数最少。示例 1:输入: n = 12输出: 3 解释: 12 = 4 + 4 + 4.示例 2:输入: n = 13输出: 2解释: 13 = 4 + 9.解题思路1、创建一个0~n的数组dp2、赋给数组每个位置需要最多完全平方数的个数...原创 2019-08-14 15:14:25 · 2542 阅读 · 0 评论 -
分发糖果-困难
题目描述老师想给孩子们分发糖果,有 N 个孩子站成了一条直线,老师会根据每个孩子的表现,预先给他们评分。你需要按照以下要求,帮助老师给这些孩子分发糖果:每个孩子至少分配到 1 个糖果。相邻的孩子中,评分高的孩子必须获得更多的糖果。那么这样下来,老师至少需要准备多少颗糖果呢?示例 1:输入: [1,0,2]输出: 5解释: 你可以分别给这三个孩子分发 2、1、2 颗糖果。示例 2...原创 2019-09-14 22:38:41 · 316 阅读 · 0 评论