摘要:
/*给出 n 代表生成括号的对数,请你写出一个函数,使其能够生成所有可能的并且有效的括号组合。例如,给出 n = 3,生成结果为: [ "((()))", "(()())", "(())()", "()(())", "()()()" ] */ /* 思路:回溯剪枝 时间复杂度为O(n2^n) 如果剪枝严格到一定程度,可不需要调用isMatch()验证,时间复杂度降为O(2^... 阅读全文
摘要:
/*将两个有序链表合并为一个新的有序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。示例:输入: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... 阅读全文
摘要:
*给定一个只包括 '(',')','{','}','[',']' 的字符串,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。 注意空字符串可被认为是有效字符串。 */ /*思路: 时间复杂度O(n) 将左括号放入栈中,如果是右括号,判断当前栈顶元素是否和当前有括号类型一致。 每有一个右括号与栈顶左括号匹配,就将栈顶左括号弹出。... 阅读全文