![](https://img-blog.csdnimg.cn/20201014180756913.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
LintCode
second24
这个作者很懒,什么都没留下…
展开
-
lintcode--402. 连续子数组求和
描述给定一个整数数组,请找出一个连续子数组,使得该子数组的和最大。输出答案时,请分别返回第一个数字和最后一个数字的下标。(如果两个相同的答案,请返回其中任意一个)样例给定 [-3, 1, 3, -3, 4], 返回[1,4].代码遍历数组,累积求和,难点在于起始位置和终止位置的更新操作。public class Solution { /* * @param...原创 2018-05-28 20:00:31 · 301 阅读 · 1 评论 -
lintcode--661. 把二叉搜索树转化成更大的树
描述给定二叉搜索树(BST),将其转换为更大的树,使原始BST上每个节点的值都更改为在原始树中大于等于该节点值的节点值之和(包括该节点)。样例Given a binary search Tree `{5,2,13}`: 5 / \ 2 13Return the root of new tree ...原创 2018-05-09 20:59:29 · 227 阅读 · 0 评论 -
lintcode--90. k数和 II
描述Your title here…Given n unique integers, number k (1<=k<=n) and target. Find all possible k integers where their sum is target.样例给出[1,2,3,4],k=2, target=5,返回 [[1,4],[2,3]]代码使用递归,不断地...原创 2018-05-01 22:21:27 · 249 阅读 · 0 评论 -
lintcode--94. 二叉树中的最大路径和
描述给出一棵二叉树,寻找一条路径使其路径和最大,路径可以在任一节点中开始和结束(路径和为两个节点之间所在路径上的节点权值之和)样例给出一棵二叉树: 1 / \ 2 3返回 6代码根据后序遍历,从下到上,max用来保存最大值,在maxPath函数中,递归返回左右子树的某个子树的最大值。/** * Definition of ...原创 2018-05-01 20:50:57 · 241 阅读 · 0 评论 -
lintcode--100. 删除排序数组中的重复数字
描述给定一个排序数组,在原数组中删除重复出现的数字,使得每个元素只出现一次,并且返回新的数组的长度。不要使用额外的数组空间,必须在原地没有额外空间的条件下完成。样例给出数组A =[1,1,2],你的函数应该返回长度2,此时A=[1,2]。代码将不重复的元素依次覆盖到原数组中。public class Solution { /* * @param nums: An ineger ar原创 2018-05-01 10:18:31 · 172 阅读 · 0 评论 -
lintcode--464. 整数排序 II
描述给一组整数,按照升序排序。使用归并排序,快速排序,堆排序或者任何其他 O(n log n) 的排序算法。样例给出 [3, 2, 1, 4, 5], 排序后的结果为 [1, 2, 3, 4, 5]。代码快排public class Solution { /** * @param A: an integer array * @return: ...原创 2018-04-22 14:39:14 · 195 阅读 · 0 评论 -
剑指offer--丑数
描述把只包含因子2、3和5的数称作丑数(Ugly Number)。例如6、8都是丑数,但14不是,因为它包含因子7。 习惯上我们把1当做是第一个丑数。求按从小到大的顺序的第N个丑数。代码import java.util.*;public class Solution { Map<Integer,Boolean> ug=new HashMap<>();...原创 2018-03-14 15:34:44 · 138 阅读 · 0 评论 -
lintcode--42. 最大子数组 II
描述给定一个整数数组,找出两个 不重叠 子数组使得它们的和最大。 每个子数组的数字在数组中的位置应该是连续的。 返回最大的和。注意事项子数组最少包含一个数样例给出数组 [1, 3, -1, 2, -1, 2]这两个子数组分别为 [1, 3] 和 [2, -1, 2] 或者 [1, 3, -1, 2] 和 [2],它们的最大和都是 7代码由于本题求的是两个子数组的和...原创 2018-03-06 16:09:49 · 177 阅读 · 0 评论 -
lintcode--41. 最大子数组
描述给定一个整数数组,找到一个具有最大和的子数组,返回其最大和。注意事项子数组最少包含一个数样例给出数组[−2,2,−3,4,−1,2,1,−5,3],符合要求的子数组为[4,−1,2,1],其最大和为6代码public class Solution { /** * @param nums: A list of integers * @r...原创 2018-03-05 22:17:28 · 113 阅读 · 0 评论 -
lintcode--20. 骰子求和
描述扔 n 个骰子,向上面的数字之和为 S。给定 Given n,请列出所有可能的 S 值及其相应的概率。注意事项You do not care about the accuracy of the result, we will help you to output results.样例给定 n = 1,返回 [ [1, 0.17], [2, 0.17], [3, 0.17],...原创 2018-02-25 22:51:08 · 494 阅读 · 0 评论 -
lintcode--33. N皇后问题
描述n皇后问题是将n个皇后放置在n*n的棋盘上,皇后彼此之间不能相互攻击。给定一个整数n,返回所有不同的n皇后问题的解决方案。每个解决方案包含一个明确的n皇后放置布局,其中“Q”和“.”分别表示一个女王和一个空位置。样例对于4皇后问题存在两种解决的方案:[ [".Q..", // Solution 1 "...Q", "Q...", ...原创 2018-03-04 23:52:34 · 200 阅读 · 0 评论 -
剑指offer--二叉树中和为某一值的路径
描述输入一颗二叉树和一个整数,打印出二叉树中结点值的和为输入整数的所有路径。路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径。代码递归寻路,根据节点的左右子树,如果该节点是叶子节点,并且当前的路径和等于target,那么就把当前的路径添加到结果list中。import java.util.ArrayList;/**public class TreeNode {...原创 2018-03-11 11:07:14 · 155 阅读 · 0 评论 -
lintcode--448. Inorder Successor in BST
描述给一个二叉查找树(什么是二叉查找树),以及一个节点,求该节点的中序遍历后继,如果没有返回null 注意事项It's guaranteed p is one node in the given tree. (You can directly compare the memory address to find p)样例给出 tree = [2,1] node = 1:返回 ...原创 2018-05-03 23:13:49 · 248 阅读 · 0 评论 -
lintcode--650. Find Leaves of Binary Tree
描述给定一个二叉树,像这样收集树节点:收集并移除所有叶子,重复,直到树为空。样例Given binary tree: 1 / \ 2 3 / \ 4 5 Returns [[4, 5, 3], [2], [1]].代码这道题可以采用遍历的方式收集叶子节点,并删除。/** * Definition of TreeNode: *...原创 2018-05-10 11:40:54 · 225 阅读 · 0 评论 -
lintcode--63. 搜索旋转排序数组 II
描述跟进“搜索旋转排序数组”,假如有重复元素又将如何?是否会影响运行时间复杂度?如何影响?为何会影响?写出一个函数判断给定的目标值是否出现在数组中。样例给出[3,4,4,5,7,0,1,2]和target=4,返回 true代码还是运用二分的思想,首先找到目标值在哪个区间上,然后再对该区间进行二分查找。public class Solution { ...原创 2018-05-27 11:48:50 · 294 阅读 · 0 评论 -
lintcode--511. 交换链表当中两个节点
描述给你一个链表以及两个权值v1和v2,交换链表中权值为v1和v2的这两个节点。保证链表中节点权值各不相同,如果没有找到对应节点,那么什么也不用做。你需要交换两个节点而不是改变节点的权值样例给出链表 1->2->3->4->null ,以及 v1 = 2 , v2 = 4返回结果 1->4->3->2->null。代码根据给...原创 2018-05-27 11:05:37 · 435 阅读 · 0 评论 -
lintcode--107. 单词拆分 I
描述给出一个字符串s和一个词典,判断字符串s是否可以被空格切分成一个或多个出现在字典中的单词。样例给出s = "lintcode"dict = ["lint","code"]返回 true 因为"lintcode"可以被空格切分成"lint code"代码public class Solution { /* * @param s: A string...原创 2018-05-08 15:39:06 · 338 阅读 · 0 评论 -
lintcode--99. 重排链表
描述给定一个单链表L: L0→L1→…→Ln-1→Ln,重新排列后为:L0→Ln→L1→Ln-1→L2→Ln-2→…必须在不改变节点值的情况下进行原地操作。样例给出链表 1->2->3->4->null,重新排列后为1->4->2->3->null。挑战Can you do this in-place without al...原创 2018-05-07 17:39:17 · 174 阅读 · 0 评论 -
lintcode--116. 跳跃游戏
描述给出一个非负整数数组,你最初定位在数组的第一个位置。 数组中的每个元素代表你在那个位置可以跳跃的最大长度。 判断你是否能到达数组的最后一个位置。样例A = [2,3,1,1,4],返回 true.A = [3,2,1,0,4],返回 false.代码建立一个一维数组,下标i表示第i步最远可以到哪儿。public class Solution {...原创 2018-05-07 15:28:23 · 268 阅读 · 0 评论 -
lintcode--880. 字符串构造二叉树
描述您需要从包含括号和整数的字符串中构造一个二叉树。 整个的输入表示一个二叉树。它包含一个整数,或零,或两对括号。该整数表示根的值,而一对括号包含一个具有相同结构的子二叉树。 如果父节点存在,您总是首先开始构造它的左子节点。在输入字符串中只有'(',')','-'和'0' ~ '9'。空树表示为“”而不是“()”。样例给定 s = “4(2(3)(1))(6(5))”, 返回...原创 2018-05-07 14:15:20 · 755 阅读 · 0 评论 -
lintcode--103. 带环链表 II
描述给定一个链表,如果链表中存在环,则返回到链表中环的起始节点,如果没有环,返回null。样例给出 -21->10->4->5, tail connects to node index 1,返回10代码/** * Definition for ListNode. * public class ListNode { * int val; * ...原创 2018-04-28 12:20:11 · 183 阅读 · 0 评论 -
lintcode--102. 带环链表
描述给定一个链表,判断它是否有环。样例给出 -21->10->4->5, tail connects to node index 1,返回 true挑战不要使用额外的空间代码设置两个slow和fast指针,每次循环时,fast指针前进2步,slow前进1步,然后判断两个指针是否会相遇。/** * Definition for ListNode...原创 2018-04-28 11:37:12 · 185 阅读 · 0 评论 -
lintcode--170. 旋转链表
描述给定一个链表,旋转链表,使得每个节点向右移动k个位置,其中k是一个非负数样例给出链表1->2->3->4->5->null和k=2返回4->5->1->2->3->null代码整体思路是先遍历一遍链表,求出链表的长度size,随后size和k进行取余得到k,取余的目的是得到需要移动的最小距离。然后我们取倒数第k...原创 2018-05-06 15:12:35 · 201 阅读 · 0 评论 -
lintcode--182. 删除数字
描述给出一个字符串 A, 表示一个 n 位正整数, 删除其中 k 位数字, 使得剩余的数字仍然按照原来的顺序排列产生一个新的正整数。找到删除 k 个数字之后的最小正整数。N <= 240, k <= N样例给出一个字符串代表的正整数 A 和一个整数 k, 其中 A = 178542, k = 4返回一个字符串 "12"代码思想是贪心,每次删除一个字符,保证...原创 2018-05-18 12:05:13 · 537 阅读 · 0 评论 -
lintcode--450. K组翻转链表
描述给你一个链表以及一个k,将这个链表从头指针开始每k个翻转一下。 链表元素个数不是k的倍数,最后剩余的不用翻转。样例给出链表 1->2->3->4->5k = 2, 返回 2->1->4->3->5k = 3, 返回 3->2->1->4->5代码整体思路是每隔k个节点,进行逆置,随后拼接。...原创 2018-05-11 16:02:39 · 200 阅读 · 0 评论 -
lintcode--109. 数字三角形
描述给定一个数字三角形,找到从顶部到底部的最小路径和。每一步可以移动到下面一行的相邻数字上。注意事项如果你只用额外空间复杂度O(n)的条件下完成可以获得加分,其中n是数字三角形的总行数。样例[ [2], [3,4], [6,5,7], [4,1,8,3]]代码本题比较快的一种方式是,从下到上,取得最终的最小路径值。public clas...原创 2018-03-10 19:44:33 · 174 阅读 · 0 评论 -
lintcode--76. 最长上升子序列
描述最长上升子序列的定义:最长上升子序列问题是在一个无序的给定序列中找到一个尽可能长的由低到高排列的子序列,这种子序列不一定是连续的或者唯一的。 https://en.wikipedia.org/wiki/Longest_increasing_subsequence样例给出 [5,4,1,2,3],LIS 是 [1,2,3],返回 3给出 [4,2,4,5,3,7],LIS 是...原创 2018-03-10 15:39:18 · 251 阅读 · 0 评论 -
lintcode---43. 最大子数组 III
描述给定一个整数数组和一个整数 k,找出 k 个不重叠子数组使得它们的和最大。每个子数组的数字在数组中的位置应该是连续的。返回最大的和。注意事项子数组最少包含一个数样例给出数组 [-1,4,-2,3,-2,3] 以及 k = 2,返回 8代码分析:与Best Time to Buy and Sell Stock IV类似,两个数组分别记录包含当前值的本地最优解和全局...原创 2018-03-10 12:32:25 · 691 阅读 · 0 评论 -
leetcode--sort-list(归并排序)
sort-list描述Sort a linked list in O(n log n) time using constant space complexity.代码设置两个指针,一个步长为1, 一个步长为2,当快指针到达尾结点时,慢指针指向中间结点,时间复杂度为O(N);平分为左链表L1和右链表L2,递归分裂,直到链表为空或者只有一个结点;将链表L2的每个结点插入...原创 2018-02-12 21:39:09 · 249 阅读 · 0 评论 -
lintcode--30. 插入区间
描述给出一个无重叠的按照区间起始端点排序的区间列表。在列表中插入一个新的区间,你要确保列表中的区间仍然有序且不重叠(如果有必要的话,可以合并区间)。样例插入区间[2, 5] 到 [[1,2], [5,9]],我们得到 [[1,9]]。插入区间[3, 4] 到 [[1,2], [5,9]],我们得到 [[1,2], [3,4], [5,9]]。代码这道题共有三种情况 1...原创 2018-02-27 08:17:00 · 153 阅读 · 0 评论 -
leetcode--max-points-on-a-line
描述Given n points on a 2D plane, find the maximum number of points that lie on the same straight line.代码/** * Definition for a point. * class Point { * int x; * int y; * Point() { x = 0原创 2018-02-11 18:43:42 · 196 阅读 · 0 评论 -
leetcode--minimum-depth-of-binary-tree
描述Given a binary tree, find its minimum depth.The minimum depth is the number of nodes along the shortest path from the root node down to the nearest leaf node.代码class Solution {public: //int min=原创 2018-02-11 14:13:00 · 102 阅读 · 0 评论 -
lintcode--245. 子树
245. 子树描述有两个不同大小的二叉树: T1 有上百万的节点; T2 有好几百的节点。请设计一种算法,判定 T2 是否为 T1的子树。**注意事项 若 T1 中存在从节点 n 开始的子树与 T2 相同,我们称 T2 是 T1 的子树。也就是说,如果在 T1 节点 n 处将树砍断,砍断的部分将与 T2 完全相同。**代码class Solution {public: /* *原创 2018-02-10 21:16:40 · 169 阅读 · 0 评论 -
lintcode 74. 第一个错误的代码版本
描述代码库的版本号是从 1 到 n 的整数。某一天,有人提交了错误版本的代码,因此造成自身及之后版本的代码在单元测试中均出错。请找出第一个错误的版本号。你可以通过 isBadVersion 的接口来判断版本号 version 是否在单元测试中出错,具体接口详情和调用方法请见代码的注释部分。注意事项请阅读上述代码,对于不同的语言获取正确的调用 isBadVersion 的方法,比如java的调用方式是原创 2017-12-02 19:41:42 · 230 阅读 · 0 评论 -
lintcode 29. 交叉字符串
描述给出三个字符串:s1、s2、s3,判断s3是否由s1和s2交叉构成。样例比如 s1 = “aabcc” s2 = “dbbca”- 当 s3 = "aadbbcbcac",返回 true.- 当 s3 = "aadbbbaccc", 返回 false.思路把i和j作为s1和s2的遍历指针,k作为s3的遍历指针,使用深度优先搜索,比较s1[i]和s3[k]以及s2[i]和s3[k]。代码#in原创 2017-12-02 17:20:47 · 339 阅读 · 0 评论 -
lintcode-二叉树的层次遍历 II
描述给出一棵二叉树,返回其节点值从底向上的层次序遍历(按从叶节点所在层到根节点所在的层遍历,然后逐层从左往右遍历)样例给出一棵二叉树 {3,9,20,#,#,15,7}, 3 / \ 9 20 / \ 15 7按照从下往上的层次遍历为:[ [15,7], [9,20], [3]]代码/** * Definition of TreeNode: *原创 2017-11-11 19:58:57 · 222 阅读 · 0 评论 -
带最小值操作的栈
描述实现一个带有取最小值min方法的栈,min方法将返回当前栈中的最小值。你实现的栈将支持push,pop 和 min 操作,所有操作要求都在O(1)时间内完成。注意事项如果堆栈中没有数字则不能进行min方法的调用样例如下操作:push(1),pop(),push(2),push(3),min(), push(1),min() 返回 1,2,1代码#include<stack>class MinS原创 2017-10-15 13:38:50 · 161 阅读 · 0 评论 -
链表划分
描述给定一个单链表和数值x,划分链表使得所有小于x的节点排在大于等于x的节点之前。你应该保留两部分内链表节点原有的相对顺序。样例给定链表 1->4->3->2->5->2->null,并且 x=3返回 1->2->2->4->3->5->null代码/** * Definition for ListNode. * public class ListNode { * int val;原创 2017-10-08 20:49:00 · 187 阅读 · 0 评论 -
56. 两数之和
两数之和问题描述给一个整数数组,找到两个数使得他们的和等于一个给定的数 target。你需要实现的函数twoSum需要返回这两个数的下标, 并且第一个下标小于第二个下标。注意这里下标的范围是 1 到 n,不是以 0 开头。注意事项你可以假设只有一组答案。思路:用一个map来保存原数组中元素的位置。 判断目标值与遍历的值的差是否在map中存在,并且判断二者的下标,相同的话,说明元素有重。不同的话,原创 2017-06-23 22:13:11 · 281 阅读 · 0 评论 -
lintcode--45. 最大子数组差
描述给定一个整数数组,找出两个不重叠的子数组A和B,使两个子数组和的差的绝对值|SUM(A) - SUM(B)|最大。返回这个最大的差值。注意事项子数组最少包含一个数样例给出数组[1, 2, -3, 1],返回 6代码由于是求两个子数组的和的差的最大绝对值。因此总体有两种情况,一种是左边的子数组的最大和远远大于右边子数组的最小和。另一种是右边子数组的最大和远远大于左...原创 2018-03-07 10:16:29 · 241 阅读 · 0 评论