LeetCode
从程序猿到程序员
努力吧骚年
展开
-
LeetCode题解——862.Shortest Subarray with Sum at Least K
中文题目 官方答案,时间复杂度O(n) 自己的思路: (1)暴力,超时了。 (2)opt(i,k):长度为i的数组,找和至少为k的连读子数组的长度。opt(i,k)=min{1+opt(i-1,k-A[i]), opt(i-1,K)},结果是失败的,要连续;故写成两种递归,若选了该值,后面都要选,不然不连续;修改后,还是超时,这是自上而下,且没用辅助数组存储结果,但是想想好像没法存,是...原创 2019-03-26 22:55:44 · 1705 阅读 · 0 评论 -
LeetCode题解——22. 括号生成(递归?)
题目 https://leetcode-cn.com/problems/generate-parentheses/ 给出 n 代表生成括号的对数,请你写出一个函数,使其能够生成所有可能的并且有效的括号组合。 例如,给出 n = 3,生成结果为: [ "((()))", "(()())", "(())()", "()(())", "()()()" ] 思路 (1)一开始想的是生...原创 2019-06-28 22:08:07 · 382 阅读 · 0 评论 -
LeetCode题解——684. 冗余连接(并查集)
题目 https://leetcode-cn.com/problems/redundant-connection/ 在本问题中, 树指的是一个连通且无环的无向图。 输入一个图,该图由一个有着N个节点 (节点值不重复1, 2, …, N) 的树及一条附加的边构成。附加的边的两个顶点包含在1到N中间,这条附加的边不属于树中已存在的边。 结果图是一个以边组成的二维数组。每一个边的元素是一对[u, v] ...原创 2019-07-03 18:44:04 · 671 阅读 · 0 评论 -
LeetCode题解——449. 序列化和反序列化二叉搜索树(二叉搜索树的特性)
https://leetcode-cn.com/problems/serialize-and-deserialize-bst 题目 序列化是将数据结构或对象转换为一系列位的过程,以便它可以存储在文件或内存缓冲区中,或通过网络连接链路传输,以便稍后在同一个或另一个计算机环境中重建。 设计一个算法来序列化和反序列化二叉搜索树。 对序列化/反序列化算法的工作方式没有限制。 您只需确保二叉搜索树可以序列化...原创 2019-06-24 23:08:31 · 165 阅读 · 0 评论 -
LeetCode题解——978. 最长湍流子数组
https://leetcode-cn.com/problems/longest-turbulent-subarray/ 题目 当 A 的子数组 A[i], A[i+1], …, A[j] 满足下列条件时,我们称其为湍流子数组: 若 i <= k < j,当 k 为奇数时, A[k] > A[k+1],且当 k 为偶数时,A[k] < A[k+1]; 或 若 i <...原创 2019-06-22 10:01:44 · 259 阅读 · 0 评论 -
LeetCode题解——46. 全排列(回溯法)
题目 给定一个没有重复数字的序列,返回其所有可能的全排列。 输入: [1,2,3] 输出: [ [1,2,3], [1,3,2], [2,1,3], [2,3,1], [3,1,2], [3,2,1] ] 思路(回溯法) f(n) = f(n-1) + w,w为任选一个数字 代码 public static List<List<Integer>>...原创 2019-06-17 22:56:02 · 485 阅读 · 0 评论 -
LeetCode题解——518. 零钱兑换 II(dp)
https://leetcode-cn.com/problems/coin-change-2/submissions/ 题目: 给定不同面额的硬币和一个总金额。写出函数来计算可以凑成总金额的硬币组合数。假设每一种面额的硬币有无限个。 示例 1: 输入: amount = 5, coins = [1, 2, 5] 输出: 4 解释: 有四种方式可以凑成总金额: 5=5 5=2+2+1 5=2+1+1...原创 2019-06-20 10:00:45 · 750 阅读 · 1 评论 -
LeetCode题解——210.课程表II(拓扑排序)
https://leetcode-cn.com/problems/course-schedule-ii/ 题目:现在你总共有 n 门课需要选,记为 0 到 n-1。 在选修某些课程之前需要一些先修课程。 例如,想要学习课程 0 ,你需要先完成课程 1 ,我们用一个匹配来表示他们: [0,1] 给定课程总量以及它们的先决条件,返回你为了学完所有课程所安排的学习顺序。 可能会有多个正确的顺序,你只要返...原创 2019-06-13 22:10:44 · 351 阅读 · 0 评论 -
LeetCode题解——23.合并K个排序链表
合并 k 个排序链表,返回合并后的排序链表。请分析和描述算法的复杂度。 示例: 输入: [ 1->4->5, 1->3->4, 2->6 ] 输出: 1->1->2->3->4->4->5->6 Java 想到两个链表合并,每次找最小的头结点,作为新的头结点,递归查找后面的...原创 2019-03-26 23:23:13 · 178 阅读 · 0 评论 -
LeetCode题解——910. 最小差值 II
题目 https://leetcode-cn.com/problems/smallest-range-ii/ 给定一个整数数组 A,对于每个整数 A[i],我们可以选择 x = -K 或是 x = K,并将 x 加到 A[i] 中。 在此过程之后,我们得到一些数组 B。 返回 B 的最大值和 B 的最小值之间可能存在的最小差值。 示例 1: 输入:A = [1], K = 0 输出:0 解释:B ...原创 2019-06-28 23:31:40 · 446 阅读 · 0 评论