
leetCode
以后每日打卡,学习ing...
yongqi_wang
少点悲伤,多点微笑。少些埋怨,多些鼓励。
展开
-
leetcode-343. 整数拆分
给定一个正整数n,将其拆分为至少两个正整数的和,并使这些整数的乘积最大化。 返回你可以获得的最大乘积。例:输入: 2输出: 1解释: 2 = 1 + 1, 1 × 1 = 1。输入: 10输出: 36解释: 10 = 3 + 3 + 4, 3 × 3 × 4 = 36。拆分规则:最优: 3 。把数字 n 可能拆为多个因子 3 ,余数为 0,1,2 三种情况。次优: 2 。若余数为 2 ;则保留,不再拆为 1+1 。最差: 1 。若余数为 1 ;则应把一份 3+1 替换为 2.原创 2020-07-30 19:20:14 · 319 阅读 · 0 评论 -
leetcode-77. 组合
给定两个整数n和k,返回 1 ...n中所有可能的k个数的组合。输入: n = 4, k = 2输出:[ [2,4], [3,4], [2,3], [1,2], [1,3], [1,4],]class Solution { private List<Integer> temp = new ArrayList<>(); private List<List<Integer>> ans = ne...原创 2020-09-16 18:18:59 · 162 阅读 · 0 评论 -
leetcode-226. 翻转二叉树
谷歌:我们90%的工程师使用您编写的软件(Homebrew),但是您却无法在面试时在白板上写出翻转二叉树这道题,这太糟糕了。示例:输入: 4 / \ 2 7 / \ / \1 3 6 9输出: 4 / \ 7 2 / \ / \9 6 3 1今天我也可以秒懂了,haha...class Solution { public TreeNode invertTree(TreeNod原创 2020-09-16 16:15:16 · 215 阅读 · 0 评论 -
leetcode-216. 组合总和 III
找出所有相加之和为n 的k个数的组合。组合中只允许含有 1 -9 的正整数,并且每种组合中不存在重复的数字。说明:所有数字都是正整数。解集不能包含重复的组合。示例 1:输入: k = 3, n = 7输出: [[1,2,4]]示例 2:输入: k = 3, n = 9输出: [[1,2,6], [1,3,5], [2,3,4]]class Solution { public List<List<Integer>> combin...原创 2020-09-11 11:51:23 · 451 阅读 · 0 评论 -
TopK问题
找到最小的K个数1.O(N):用快排变形最最最高效解决TopK问题 class Solution { public int[] getLeastNumbers(int[] arr, int k) { if (k == 0 || arr.length == 0) { return new int[0]; } // ⚠️注意最后一个参数传入我们要找的下标(第k小的数下标是k-1) return qu...原创 2020-07-17 16:32:03 · 256 阅读 · 0 评论 -
leetcode-96. 不同的二叉搜索树
给定一个整数n,求以1 ...n为节点组成的二叉搜索树有多少种?例:输入: 3输出: 5解释:给定 n = 3, 一共有 5 种不同结构的二叉搜索树: 1 3 3 2 1 \ / / / \ \ 3 2 1 1 3 2 / / \ \ 2 1 2 ...原创 2020-07-15 12:11:27 · 170 阅读 · 0 评论 -
leetcode-209. 长度最小的子数组
给定一个含有n个正整数的数组和一个正整数s ,找出该数组中满足其和≥ s的长度最小的子数组,并返回其长度。如果不存在符合条件的子数组,返回 0。示例:输入:s = 7, nums = [2,3,1,2,4,3]输出:2解释:子数组 [4,3] 是该条件下的长度最小的子数组。解:滑动窗口public static int minSubArrayLen(int s, int[] nums) { int len = nums.length; if ...原创 2020-07-10 16:53:47 · 440 阅读 · 0 评论 -
leetcode-15. 三数之和等于0
给你一个包含 n 个整数的数组nums,判断nums中是否存在三个元素 a,b,c ,使得a + b + c = 0 ?请你找出所有满足条件且不重复的三元组。注意:答案中不可以包含重复的三元组。示例:给定数组 nums = [-1, 0, 1, 2, -1, -4],满足要求的三元组集合为:[ [-1, 0, 1], [-1, -1, 2]]class Solution { public List<List<Integer>...原创 2020-06-12 17:21:15 · 388 阅读 · 0 评论 -
leetcode-146. LRU缓存机制
不用那么多花里胡哨,直接12行代码解决 /苦笑运用你所掌握的数据结构,设计和实现一个LRU (最近最少使用) 缓存机制。它应该支持以下操作: 获取数据 get 和 写入数据 put 。获取数据 get(key) - 如果密钥 (key) 存在于缓存中,则获取密钥的值(总是正数),否则返回 -1。写入数据 put(key, value) - 如果密钥已经存在,则变更其数据值;如果密钥不存在,则插入该组「密钥/数据值」。当缓存容量达到上限时,它应该在写入新数据之前删除最久未使用的数据值,从而为新的..原创 2020-05-25 17:45:40 · 232 阅读 · 0 评论 -
leetcode-152. 乘积最大子数组
给你一个整数数组nums,请你找出数组中乘积最大的连续子数组(该子数组中至少包含一个数字),并返回该子数组所对应的乘积。示例 1:输入: [2,3,-2,4]输出: 6解释: 子数组 [2,3] 有最大乘积 6。示例 2:输入: [-2,0,-1]输出: 0解释: 结果不能为 2, 因为 [-2,-1] 不是子数组。题目理解: 求数组中两个连续下标的数字最大值。解题思路:前后遍历两次求最大乘积即可class Solution { public i..原创 2020-05-18 19:19:14 · 202 阅读 · 0 评论 -
leetcode-983. 最低票价
在一个火车旅行很受欢迎的国度,你提前一年计划了一些火车旅行。在接下来的一年里,你要旅行的日子将以一个名为days的数组给出。每一项是一个从1到365的整数。火车票有三种不同的销售方式:一张为期一天的通行证售价为costs[0] 美元;一张为期七天的通行证售价为costs[1] 美元;一张为期三十天的通行证售价为costs[2] 美元。通行证允许数天无限制的旅行。 例...原创 2020-05-06 17:37:43 · 240 阅读 · 0 评论 -
leetcode-33. 搜索旋转排序数组
假设按照升序排序的数组在预先未知的某个点上进行了旋转。( 例如,数组[0,1,2,4,5,6,7]可能变为[4,5,6,7,0,1,2])。搜索一个给定的目标值,如果数组中存在这个目标值,则返回它的索引,否则返回-1。你可以假设数组中不存在重复的元素。你的算法时间复杂度必须是O(logn) 级别。示例 1:输入: nums = [4,5,6,7,0,1,2...原创 2020-04-27 18:11:49 · 229 阅读 · 0 评论 -
leetcode-面试题 08.11. 硬币
硬币。给定数量不限的硬币,币值为25分、10分、5分和1分,编写代码计算n分有几种表示法。(结果可能会很大,你需要将结果模上1000000007)示例1: 输入: n = 5 输出:2 解释: 有两种方式可以凑成总金额:5=55=1+1+1+1+1示例2: 输入: n = 10 输出:4 解释: 有四种方式可以凑成总金额:10=1010=5+510=5+1+1...原创 2020-04-23 11:25:26 · 238 阅读 · 0 评论 -
leetcode-200. 岛屿数量
给你一个由'1'(陆地)和 '0'(水)组成的的二维网格,请你计算网格中岛屿的数量。岛屿总是被水包围,并且每座岛屿只能由水平方向和/或竖直方向上相邻的陆地连接形成。此外,你可以假设该网格的四条边均被水包围。示例 1:输入:11110110101100000000输出: 1示例2:输入:11000110000010000011输出: 3解释...原创 2020-04-20 17:17:42 · 395 阅读 · 0 评论 -
leetcode-11. 盛最多水的容器
给你 n 个非负整数 a1,a2,...,an,每个数代表坐标中的一个点(i,ai) 。在坐标内画 n 条垂直线,垂直线 i的两个端点分别为(i,ai) 和 (i, 0)。找出其中的两条线,使得它们与x轴共同构成的容器可以容纳最多的水。说明:你不能倾斜容器,且n的值至少为 2。示例:输入:[1,8,6,2,5,4,8,3,7]输出:49class ...原创 2020-04-18 17:03:25 · 167 阅读 · 0 评论 -
leetcode-542. 01 矩阵
给定一个由 0 和 1 组成的矩阵,找出每个元素到最近的 0 的距离。两个相邻元素间的距离为 1 。示例 1:输入:0 0 00 1 00 0 0输出:0 0 00 1 00 0 0示例 2:输入:0 0 00 1 01 1 1输出:0 0 00 1 01 2 1以上啰里啰嗦一大堆,其实意思就是修改所有非0元素的值,为当前元素和最近的...原创 2020-04-15 14:43:41 · 479 阅读 · 0 评论 -
leetcode-151. 翻转字符串里的单词
给定一个字符串,逐个翻转字符串中的每个单词。示例 1:输入: "the sky is blue"输出: "blue is sky the"示例 2:输入: " hello world! "输出:"world! hello"解释: 输入字符串可以在前面或者后面包含多余的空格,但是反转后的字符不能包括。示例 3:输入: "a good example"...原创 2020-04-10 17:38:10 · 176 阅读 · 0 评论 -
leetcode-22. 括号生成
数字n代表生成括号的对数,请你设计一个函数,用于能够生成所有可能的并且有效的括号组合。示例:输入:n = 3输出:[ "((()))", "(()())", "(())()", "()(())", "()()()" ]class Solution { List<String>...原创 2020-04-09 18:11:05 · 138 阅读 · 0 评论 -
leetcode-面试题 01.07. 旋转矩阵
给你一幅由N × N矩阵表示的图像,其中每个像素的大小为 4 字节。请你设计一种算法,将图像旋转 90 度。示例 1:给定 matrix = [ [1,2,3], [4,5,6], [7,8,9]],原地旋转输入矩阵,使其变为:[ [7,4,1], [8,5,2], [9,6,3]]示例 2:给定 matrix =[ [ 5, 1...原创 2020-04-07 13:56:58 · 229 阅读 · 0 评论 -
leetcode-8. 字符串转换整数
请你来实现一个atoi函数,使其能将字符串转换成整数。首先,该函数会根据需要丢弃无用的开头空格字符,直到寻找到第一个非空格的字符为止。接下来的转化规则如下:如果第一个非空字符为正或者负号时,则将该符号与之后面尽可能多的连续数字字符组合起来,形成一个有符号整数。假如第一个非空字符是数字,则直接将其与之后连续的数字字符组合起来,形成一个整数。该字符串在有效的整数部分之后也可能会存在多余...原创 2020-04-03 15:27:18 · 240 阅读 · 0 评论 -
leetcode-289. 生命游戏
根据百度百科,生命游戏,简称为生命,是英国数学家约翰·何顿·康威在 1970 年发明的细胞自动机。给定一个包含 m × n 个格子的面板,每一个格子都可以看成是一个细胞。每个细胞都具有一个初始状态:1 即为活细胞(live),或 0 即为死细胞(dead)。每个细胞与其八个相邻位置(水平,垂直,对角线)的细胞都遵循以下四条生存定律:如果活细胞周围八个位置的活细胞数少于两个,则该位...原创 2020-04-02 19:39:36 · 307 阅读 · 0 评论 -
leetcode-1111. 有效括号的嵌套深度
官方描述太复杂,其实就是求一个字符串内的有效括号嵌套层级注意这里的0和1 不是固定死的,把0变成1在把1变成0也可以。示例 1:输入:seq = "(()())"输出:[0,1,1,1,1,0]示例 2:输入:seq = "()(())()"输出:[0,0,0,1,1,0,1,1]class Solution { public int[] max...原创 2020-04-01 14:57:30 · 240 阅读 · 0 评论 -
leetcode-912. 排序数组
给你一个整数数组nums,将该数组升序排列。(是不是感觉好简单,但是考虑到用时和内存消耗就不是一个冒泡解决就可以的了)提示:1 <= nums.length <= 50000 -50000 <= nums[i] <= 50000代码来自:Sweetiee的题解,我在上面小改了一下节约了1.9M内存消耗。class Solution { // 计...原创 2020-03-31 16:29:46 · 214 阅读 · 0 评论 -
leetcode-62. 圆圈中最后剩下的数字
0,1,,n-1这n个数字排成一个圆圈,从数字0开始,每次从这个圆圈里删除第m个数字。求出这个圆圈里剩下的最后一个数字。例如,0、1、2、3、4这5个数字组成一个圆圈,从数字0开始每次删除第3个数字,则删除的前4个数字依次是2、0、4、1,因此最后剩下的数字是3。示例 1:输入: n = 5, m = 3输出: 3示例 2:输入: n = 10, m = 17输出: 2...原创 2020-03-30 17:39:57 · 202 阅读 · 0 评论 -
leetcode-820. 单词的压缩编码
给定一个单词列表,我们将这个列表编码成一个索引字符串S与一个索引列表 A。例如,如果这个列表是 ["time", "me", "bell"],我们就可以将其表示为 S = "time#bell#" 和 indexes = [0, 2, 5]。对于每一个索引,我们可以通过从字符串 S中索引的位置开始读取字符串,直到 "#" 结束,来恢复我们之前的单词列表。那么成功对给定单词列表进行...原创 2020-03-28 17:32:19 · 372 阅读 · 0 评论 -
leetcode.4 寻找两个有序数组的中位数
官方题解:/* * 1.首先,让我们在任一位置 i 将 A(长度为m) 划分成两个部分: * leftA | rightA * A[0],A[1],... A[i-1] | A[i],A[i+1],...A[m - 1] * * 由于A有m个...原创 2020-03-27 19:44:33 · 168 阅读 · 0 评论 -
leetcode-1389. 按既定顺序创建目标数组
给你两个整数数组 nums 和 index。你需要按照以下规则创建目标数组:目标数组 target 最初为空。按从左到右的顺序依次读取 nums[i] 和 index[i],在 target 数组中的下标 index[i] 处插入值 nums[i] 。重复上一步,直到在 nums 和 index 中都没有要读取的元素。请你返回目标数组。示例 1:输入:nums = [0,1,2,...原创 2020-03-25 15:04:20 · 392 阅读 · 0 评论 -
leetcode-最小/最大的k个数
以下代码为给定一个数组求最小的k个数class Solution { public int[] getLeastNumbers(int[] arr, int k) { if (k == 0 || arr.length == 0) { return new int[0]; } // 最后一个参数表示我们要找的...原创 2020-03-25 14:54:45 · 771 阅读 · 0 评论 -
leetcode-最长公共前缀
编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串""。示例1:输入: ["flower","flow","flight"]输出: "fl"示例2:输入: ["dog","racecar","car"]输出: ""解释: 输入不存在公共前缀。说明:所有输入只包含小写字母a-z。class Solution { pub...原创 2019-08-12 11:34:04 · 219 阅读 · 0 评论