摘要: /*给出 n 代表生成括号的对数,请你写出一个函数,使其能够生成所有可能的并且有效的括号组合。例如,给出 n = 3,生成结果为: [ "((()))", "(()())", "(())()", "()(())", "()()()" ] */ /* 思路:回溯剪枝 时间复杂度为O(n2^n) 如果剪枝严格到一定程度,可不需要调用isMatch()验证,时间复杂度降为O(2^... 阅读全文
posted @ 2019-01-14 21:56 散装英语king 阅读(255) 评论(0) 推荐(0) 编辑
摘要: /*将两个有序链表合并为一个新的有序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。示例:输入:1->2->4, 1->3->4输出:1->1->2->3->4->4Definition for singly-linked list. public class ListNode { * int val; * ListNode next; * ListNode(i... 阅读全文
posted @ 2019-01-14 21:52 散装英语king 阅读(256) 评论(0) 推荐(0) 编辑
摘要: *给定一个只包括 '(',')','{','}','[',']' 的字符串,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。 注意空字符串可被认为是有效字符串。 */ /*思路: 时间复杂度O(n) 将左括号放入栈中,如果是右括号,判断当前栈顶元素是否和当前有括号类型一致。 每有一个右括号与栈顶左括号匹配,就将栈顶左括号弹出。... 阅读全文
posted @ 2019-01-14 21:51 散装英语king 阅读(197) 评论(0) 推荐(0) 编辑