题目描述:
输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。
解题思路:
我们可以用迭代的方法来实现上述算法。当 l1 和 l2 都不是空链表时,判断 l1 和 l2 哪一个链表的头节点的值更小,将较小值的节点添加到结果里,当一个节点被添加到结果里之后,将... ...
分类:
其他好文 时间:
2020-08-26 18:35:46
阅读次数:
51
题目描述 输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。 1 /* 2 struct ListNode { 3 int val; 4 struct ListNode *next; 5 ListNode(int x) : 6 val(x), next(NU ...
分类:
编程语言 时间:
2020-07-22 20:46:19
阅读次数:
82
对于这道题,可以想想对于每个b[i],a[i]中可选的位置的区间在哪,这样只要找到区间,就能知道当前可以选那几个位置断开 b[1]的开头肯定是1号位,而我们发现如果对后缀求一下后缀的最小值,这样就天然满足题目条件,我们用一个map存一下答案,就能知道b[i]是最小值的区间是哪些 因为b是单调递增的数 ...
分类:
其他好文 时间:
2020-07-22 02:00:03
阅读次数:
62
题目描述 输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。 C++实现: class Solution { public: ListNode* Merge(ListNode* pHead1, ListNode* pHead2) { if(!pHead1) ...
分类:
编程语言 时间:
2020-07-13 21:31:49
阅读次数:
60
单调栈(Monotone Stack) 栈的应用中有一类问题称为单调栈(Monotone Stack)问题,可以巧妙的将某些问题的时间复杂度降到「O(n)级别」。那么什么是单调栈呢? 所谓单调栈,就是保持栈中的元素是单调的。假设把数组 [2 1 4 6 5]依次入栈,并保持栈的单调递增性,如下: 元 ...
分类:
其他好文 时间:
2020-07-12 12:07:05
阅读次数:
70
分析 如果某一个栅栏能被刷完,他向左和向右延伸的宽度(包括自己)之和应该不小于刷子的宽度 \(M\),因此,我们可以先处理一下每个栅栏向左向右延伸的宽度。 两个 \(O(n)\) 单调栈搞一下 // 找出以第i个栅栏高度为基准向左向右延伸的长度 // 维护单调递增的栈,这个是向右的 head = 0 ...
分类:
其他好文 时间:
2020-07-01 12:39:20
阅读次数:
44
题目: 给定一个函数f(x,y)和一个值z,返回所有正整数对x和y,满足f(x,y)== z。f(x,y)为单调递增函数,即:f(x,y)<f(x + 1,y)f(x,y)<f(x,y + 1) Example 1: Input: function_id = 1, z = 5 Output: [[1 ...
分类:
其他好文 时间:
2020-06-23 15:25:02
阅读次数:
47
###题目描述 输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。 ###代码示例 public class Offer17 { public static void main(String[] args) { ListNode l1 = new ListN ...
分类:
编程语言 时间:
2020-06-20 01:03:44
阅读次数:
55
经典DP问题之最长上升子序列和最长公共子序列 在DP问题中,最长上升子序列(LIS)和最长公共子序列(LCS)无疑是最经典的入门题目,充分体现了DP的思想。 最长上升子序列(LIS) 题目描述 给定一个长度为N的数列,求数值严格单调递增的子序列的长度最长是多少。 示例 input: 7 3 1 2 ...
分类:
其他好文 时间:
2020-06-20 01:00:21
阅读次数:
48
1、分类 单调递增栈:数据出栈的序列为单调递增序列 单调第减栈:数据出栈的序列为单调递减序列 2、操作(以单调递增栈为例) 如果新元素比栈顶元素大, 入栈 如果新元素比栈顶元素小,栈顶元素出栈,直到栈顶元素小于该元素,入栈该元素 3、示例 例如,给定一个序列 [ 1, 3, 5, 2, 4 ],当1 ...
分类:
其他好文 时间:
2020-05-30 21:55:30
阅读次数:
66