自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(50)
  • 收藏
  • 关注

原创 lc384 打乱数组

给你一个整数数组 nums ,设计算法来打乱一个没有重复元素的数组。实现 Solution class:Solution(int[] nums) 使用整数数组 nums 初始化对象int[] reset() 重设数组到它的初始状态并返回int[] shuffle() 返回数组随机打乱后的结果示例:输入[“Solution”, “shuffle”, “reset”, “shuffle”][[[1, 2, 3]], [], [], []]输出[null, [3, 1, 2], [1, 2,

2021-02-02 22:53:59 167

原创 lc240 搜索二维矩阵II

编写一个高效的算法来搜索 m x n 矩阵 matrix 中的一个目标值 target 。该矩阵具有以下特性:每行的元素从左到右升序排列。每列的元素从上到下升序排列。示例 1:输入:matrix = [[1,4,7,11,15],[2,5,8,12,19],[3,6,9,16,22],[10,13,14,17,24],[18,21,23,26,30]], target = 5输出:true示例 2:输入:matrix = [[1,4,7,11,15],[2,5,8,12,19],[3,6,

2021-02-02 20:19:51 159

原创 lc334递增的三元子序列

给你一个整数数组 nums ,判断这个数组中是否存在长度为 3 的递增子序列。如果存在这样的三元组下标 (i, j, k) 且满足 i < j < k ,使得 nums[i] < nums[j] < nums[k] ,返回 true ;否则,返回 false 。示例 1:输入:nums = [1,2,3,4,5]输出:true解释:任何 i < j < k 的三元组都满足题意示例 2:输入:nums = [5,4,3,2,1]输出:false解释:不存在

2021-02-02 19:34:13 176

原创 lc405 405. 数字转换为十六进制数

给定一个整数,编写一个算法将这个数转换为十六进制数。对于负整数,我们通常使用 补码运算 方法。注意:十六进制中所有字母(a-f)都必须是小写。十六进制字符串中不能包含多余的前导零。如果要转化的数为0,那么以单个字符’0’来表示;对于其他情况,十六进制字符串中的第一个字符将不会是0字符。给定的数确保在32位有符号整数范围内。不能使用任何由库提供的将数字直接转换或格式化为十六进制的方法。示例 1:输入:26输出:“1a”示例 2:输入:-1输出:“ffffffff”通过次数19,

2021-02-01 15:47:16 276

原创 lc204计算质数

统计所有小于非负整数 n 的质数的数量。示例 1:输入:n = 10输出:4解释:小于 10 的质数一共有 4 个, 它们是 2, 3, 5, 7 。示例 2:输入:n = 0输出:0示例 3:输入:n = 1输出:0提示:0 <= n <= 5 * 106这里用的是埃式筛法本题需要注意 数据范围 510^6,在ii的时候,会溢出,因为要强转为long思路:开创一个boolean数组,下标为0-n,用于保存是否是素数,如果不是素数那么就跳过,是素数的话 这个素数的倍

2021-02-01 14:17:13 54

原创 lc524 通过删除字母匹配到字典里最长单词

给定一个字符串和一个字符串字典,找到字典里面最长的字符串,该字符串可以通过删除给定字符串的某些字符来得到。如果答案不止一个,返回长度最长且字典顺序最小的字符串。如果答案不存在,则返回空字符串。示例 1:输入:s = “abpcplea”, d = [“ale”,“apple”,“monkey”,“plea”]输出:“apple”示例 2:输入:s = “abpcplea”, d = [“a”,“b”,“c”]输出:“a”说明:所有输入的字符串只包含小写字母。字典的大小不会超过 10

2021-01-30 19:25:55 63

原创 lc141 环形链表

给定一个链表,判断链表中是否有环。如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。 为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。注意:pos 不作为参数进行传递,仅仅是为了标识链表的实际情况。如果链表中存在环,则返回 true 。 否则,返回 false 。进阶:你能用 O(1)(即,常量)内存解决此问题吗?示例 1:输入:head = [3,2,0,-4], po

2021-01-30 16:37:52 134

原创 lc 88 合并两个有序数组

给你两个有序整数数组 nums1 和 nums2,请你将 nums2 合并到 nums1 中,使 nums1 成为一个有序数组。初始化 nums1 和 nums2 的元素数量分别为 m 和 n 。你可以假设 nums1 的空间大小等于 m + n,这样它就有足够的空间保存来自 nums2 的元素。示例 1:输入:nums1 = [1,2,3,0,0,0], m = 3, nums2 = [2,5,6], n = 3输出:[1,2,2,3,5,6]示例 2:输入:nums1 = [1], m =

2021-01-30 16:03:58 118

原创 lc 680 验证回文串II

给定一个非空字符串 s,最多删除一个字符。判断是否能成为回文字符串。示例 1:输入: “aba”输出: True示例 2:输入: “abca”输出: True解释: 你可以删除c字符。注意:字符串只包含从 a-z 的小写字母。字符串的最大长度是50000。题解 :注意这里是分别删除一个字符 之后 再次判断剩下的两个是否能够成回文!class Solution { public boolean validPalindrome(String s) { int l

2021-01-30 15:25:50 86

原创 leetcode 345 反转字符串的元音字母

编写一个函数,以字符串作为输入,反转该字符串中的元音字母。示例 1:输入:“hello”输出:“holle”示例 2:输入:“leetcode”输出:“leotcede”提示:元音字母不包含字母 “y” 。题解:使用双指针,一个从前开始 指,一个从后开始指,遇到元音就交换这里的注意点有两点:1.Java中的String是不可变的,所以需要创建一个 StringBuffer2.判断一个字符是不是元音字母,不要编写一个函数,放在一个set中,可以以O(1)时间去读取!class So

2021-01-30 14:23:09 100

原创 leetcode 721 账户合并

中等给定一个列表 accounts,每个元素 accounts[i] 是一个字符串列表,其中第一个元素 accounts[i][0] 是 名称 (name),其余元素是 emails 表示该账户的邮箱地址。现在,我们想合并这些账户。如果两个账户都有一些共同的邮箱地址,则两个账户必定属于同一个人。请注意,即使两个账户具有相同的名称,它们也可能属于不同的人,因为人们可能具有相同的名称。一个人最初可以拥有任意数量的账户,但其所有账户都具有相同的名称。合并账户后,按以下格式返回账户:每个账户的第一个元素是名称

2021-01-18 15:24:55 204

原创 力扣803-打砖块-并查集应用-hard

有一个 m x n 的二元网格,其中 1 表示砖块,0 表示空白。砖块 稳定(不会掉落)的前提是:一块砖直接连接到网格的顶部,或者至少有一块相邻(4 个方向之一)砖块 稳定 不会掉落时给你一个数组 hits ,这是需要依次消除砖块的位置。每当消除 hits[i] = (rowi, coli) 位置上的砖块时,对应位置的砖块(若存在)会消失,然后其他的砖块可能因为这一消除操作而掉落。一旦砖块掉落,它会立即从网格中消失(即,它不会落在其他稳定的砖块上)。返回一个数组 result ,其中 result[

2021-01-16 16:12:06 164

原创 leetcode-并查集应用-947-移除最多的同行或同列石头

n 块石头放置在二维平面中的一些整数坐标点上。每个坐标点上最多只能有一块石头。如果一块石头的 同行或者同列 上有其他石头存在,那么就可以移除这块石头。给你一个长度为 n 的数组 stones ,其中 stones[i] = [xi, yi] 表示第 i 块石头的位置,返回 可以移除的石子 的最大数量。示例 1:输入:stones = [[0,0],[0,1],[1,0],[1,2],[2,1],[2,2]]输出:5解释:一种移除 5 块石头的方法如下所示:移除石头 [2,2] ,因为它和 [

2021-01-15 22:11:41 129

原创 并查集 (Union-Find) java 模板

并查集 union-find 是一种数据结构,主要是解决动态连通性问题,最核心的两个操作是find()和union(),分别是查找元素属于哪个集合以及将两个集合进行合并,速度非常快。我是参考算法4中内容进行学习的,讲的非常好一般使用的最优化算法都是带路径压缩的并查集,最核心的就是find()函数的实现,将所有的节点都直接链接到它的根节点上,我们在检查节点的同时将她们直接链接到根节点上即可,这样得到的就是近乎扁平化的树,路径压缩的加权quick-union算法是最优的算法,但并非所有操作都能在常数时间内

2021-01-15 18:03:27 279

原创 leetcode 49 字母异位词分组

给定一个字符串数组,将字母异位词组合在一起。字母异位词指字母相同,但排列不同的字符串。示例:输入: [“eat”, “tea”, “tan”, “ate”, “nat”, “bat”]输出:[[“ate”,“eat”,“tea”],[“nat”,“tan”],[“bat”]]说明:所有输入均为小写字母。不考虑答案输出的顺序。分析:对于字母异位词来说,它们所含的字母是相同的,只是顺序不同,因此将它们进行排序后,字母异位词应该是相同的。在这里,我们可以创建一个哈希表来保存答案,HashM

2020-12-14 10:01:01 106

原创 leetcode 48 翻转图像

给定一个 n × n 的二维矩阵表示一个图像。将图像顺时针旋转 90 度。说明:你必须在原地旋转图像,这意味着你需要直接修改输入的二维矩阵。请不要使用另一个矩阵来旋转图像。示例 1:给定 matrix =[[1,2,3],[4,5,6],[7,8,9]],原地旋转输入矩阵,使其变为:[[7,4,1],[8,5,2],[9,6,3]]示例 2:给定 matrix =[[ 5, 1, 9,11],[ 2, 4, 8,10],[13, 3, 6, 7],[15,14,

2020-12-13 14:47:10 126

原创 leetcode 31 下一个排列

实现获取 下一个排列 的函数,算法需要将给定数字序列重新排列成字典序中下一个更大的排列。如果不存在下一个更大的排列,则将数字重新排列成最小的排列(即升序排列)。必须 原地 修改,只允许使用额外常数空间。示例 1:输入:nums = [1,2,3]输出:[1,3,2]示例 2:输入:nums = [3,2,1]输出:[1,2,3]示例 3:输入:nums = [1,1,5]输出:[1,5,1]示例 4:输入:nums = [1]输出:[1]提示:1 <= nums.len

2020-12-13 11:14:41 75

原创 leetcode 217存在重复元素

给定一个整数数组,判断是否存在重复元素。如果任意一值在数组中出现至少两次,函数返回 true 。如果数组中每个元素都不相同,则返回 false 。示例 1:输入: [1,2,3,1]输出: true示例 2:输入: [1,2,3,4]输出: false示例 3:输入: [1,1,1,3,3,4,3,2,4,2]输出: true分析:方法一:排序此题较为简单,最容易想到的是对数组进行排序,然后给两个指针,进行比较,判断是否存在相同元素,不过这样排完序的时间复杂度最低就是nlogn方

2020-12-13 09:30:18 101

原创 leetcode 11 盛最多水的容器

给你 n 个非负整数 a1,a2,…,an,每个数代表坐标中的一个点 (i, ai) 。在坐标内画 n 条垂直线,垂直线 i 的两个端点分别为 (i, ai) 和 (i, 0) 。找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。说明:你不能倾斜容器。示例 1:输入:[1,8,6,2,5,4,8,3,7]输出:49解释:图中垂直线代表输入数组 [1,8,6,2,5,4,8,3,7]。在此情况下,容器能够容纳水(表示为蓝色部分)的最大值为 49。示例 2:输入:height

2020-12-11 20:35:12 60

原创 leetcode3 无重复字符的最长子串-滑动窗口

给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。示例 1:输入: s = “abcabcbb”输出: 3解释: 因为无重复字符的最长子串是 “abc”,所以其长度为 3。示例 2:输入: s = “bbbbb”输出: 1解释: 因为无重复字符的最长子串是 “b”,所以其长度为 1。示例 3:输入: s = “pwwkew”输出: 3解释: 因为无重复字符的最长子串是 “wke”,所以其长度为 3。请注意,你的答案必须是 子串 的长度,“pwke” 是一个子序列,不是

2020-12-11 18:57:00 69

原创 leetcode200 岛屿数量

给你一个由 ‘1’(陆地)和 ‘0’(水)组成的的二维网格,请你计算网格中岛屿的数量。岛屿总是被水包围,并且每座岛屿只能由水平方向和/或竖直方向上相邻的陆地连接形成。此外,你可以假设该网格的四条边均被水包围。示例 1:输入:grid = [[“1”,“1”,“1”,“1”,“0”],[“1”,“1”,“0”,“1”,“0”],[“1”,“1”,“0”,“0”,“0”],[“0”,“0”,“0”,“0”,“0”]]输出:1示例 2:输入:grid = [[“1”,“1”,“0”,“0

2020-12-11 13:41:03 528

原创 无边界问题的快速排序模板-java

快速排序是非常经典的排序方法,利用到了分治的思想,主元的选取也有不同的选法,也有不同的写法,也容易出现边界问题,下面给出一个无边界问题的快速排序模板,记住即可~package test1;public class quick_sort { public static void main(String[] args) { int q[] = new int[] {6,5,4,3,2,1}; quicksort(q, 0, q.length - 1); for(int i

2020-12-09 12:43:45 101

原创 leetcode 55 跳跃游戏

给定一个非负整数数组,你最初位于数组的第一个位置。数组中的每个元素代表你在该位置可以跳跃的最大长度。判断你是否能够到达最后一个位置。示例 1:输入: [2,3,1,1,4]输出: true解释: 我们可以先跳 1 步,从位置 0 到达 位置 1, 然后再从位置 1 跳 3 步到达最后一个位置。示例 2:输入: [3,2,1,0,4]输出: false解释: 无论怎样,你总会到达索引为 3 的位置。但该位置的最大跳跃长度是 0 , 所以你永远不可能到达最后一个位置。分析:方法一:看到

2020-12-01 10:32:53 55

原创 leetcode 34 在排序数组中查找元素的第一个和最后一个位置

给定一个按照升序排列的整数数组 nums,和一个目标值 target。找出给定目标值在数组中的开始位置和结束位置。如果数组中不存在目标值 target,返回 [-1, -1]。进阶:你可以设计并实现时间复杂度为 O(log n) 的算法解决此问题吗?示例 1:输入:nums = [5,7,7,8,8,10], target = 8输出:[3,4]示例 2:输入:nums = [5,7,7,8,8,10], target = 6输出:[-1,-1]示例 3:输入:nums = [], t

2020-12-01 09:45:41 65

原创 leetcode 454四数相加II

给定四个包含整数的数组列表 A , B , C , D ,计算有多少个元组 (i, j, k, l) ,使得 A[i] + B[j] + C[k] + D[l] = 0。为了使问题简单化,所有的 A, B, C, D 具有相同的长度 N,且 0 ≤ N ≤ 500 。所有整数的范围在 -228 到 228 - 1 之间,最终结果不会超过 231 - 1 。例如:输入:A = [ 1, 2]B = [-2,-1]C = [-1, 2]D = [ 0, 2]输出:2解释:两个元组如下:

2020-11-27 16:11:24 242

原创 p类、np类、npc类、np-hard类问题

在学习算法分析的过程中,我们首先需要明确的是p类、np类、npc类、np-hard类问题的定义以及它们的异同,其实对于很多人都没有搞清楚它们的定义,甚至混淆它们的用法。1.P类问题,可以这样记:Polynomial time solve,可以在确定性图灵机计算模型上以多项式时间解决的问题类,叫做P类问题。2.NP类问题,NonDeterministic Polynomial time verify,在非确定图灵机计算模型上能以多项式时间验证的问题类,叫做NP类问题。补充:对于P类问题,既然我们能在多项

2020-11-27 14:07:28 1256 1

原创 leetcode 47 全排列II--回溯+剪枝

给定一个可包含重复数字的序列 nums ,按任意顺序 返回所有不重复的全排列。示例 1:输入:nums = [1,1,2]输出:[[1,1,2],[1,2,1],[2,1,1]]示例 2:输入:nums = [1,2,3]输出:[[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]]提示:1 <= nums.length <= 8-10 <= nums[i] <= 10分析:这里是解决办法还是回溯法,但是问题在于题目

2020-11-26 20:52:48 137

原创 leetcode 77 组合-回溯加剪枝

给定两个整数 n 和 k,返回 1 … n 中所有可能的 k 个数的组合。示例:输入: n = 4, k = 2输出:[[2,4],[3,4],[2,3],[1,2],[1,3],[1,4],]分析:此题为较简单,使用回溯加剪枝即可解决。首先我们分析递归函数的参数,需要一个pos来表示当前选取了多少个数,同时还需要一个参数curr来表示当前是对1…n中的哪个数进行操作,对于每个curr都可以有选和不选两种选择,分别递归下去即可。需要注意的是,这里有个剪枝小技巧,在剪枝之前耗时3m

2020-11-26 17:22:38 161 1

原创 leetcode 216 组合总和III --回溯

找出所有相加之和为 n 的 k 个数的组合。组合中只允许含有 1 - 9 的正整数,并且每种组合中不存在重复的数字。说明:所有数字都是正整数。解集不能包含重复的组合。示例 1:输入: k = 3, n = 7输出: [[1,2,4]]示例 2:输入: k = 3, n = 9输出: [[1,2,6], [1,3,5], [2,3,4]]分析:本题仍然使用的是回溯+递归,对于1-9的每个数都有选择和不选择两种情况,这里我们需要明确的是递归函数的参数,我们可以用一个参数来begin 来控制

2020-11-26 16:41:10 872

原创 leetcode 40组合总和II -回溯

给定一个数组 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合。candidates 中的每个数字在每个组合中只能使用一次。说明:所有数字(包括目标数)都是正整数。解集不能包含重复的组合。示例 1:输入: candidates = [10,1,2,7,6,1,5], target = 8,所求解集为:[[1, 7],[1, 2, 5],[2, 6],[1, 1, 6]]示例 2:输入: candidate

2020-11-26 15:36:49 88

原创 leetcode 1370上升下降字符串2020-11-25每日一题

给你一个字符串 s ,请你根据下面的算法重新构造字符串:从 s 中选出 最小 的字符,将它 接在 结果字符串的后面。从 s 剩余字符中选出 最小 的字符,且该字符比上一个添加的字符大,将它 接在 结果字符串后面。重复步骤 2 ,直到你没法从 s 中选择字符。从 s 中选出 最大 的字符,将它 接在 结果字符串的后面。从 s 剩余字符中选出 最大 的字符,且该字符比上一个添加的字符小,将它 接在 结果字符串后面。重复步骤 5 ,直到你没法从 s 中选择字符。重复步骤 1 到 6 ,直到 s 中所

2020-11-25 13:45:52 60

原创 leetcode 416 分割等和子集-可以看成背包问题

给定一个只包含正整数的非空数组。是否可以将这个数组分割成两个子集,使得两个子集的元素和相等。注意:每个数组中的元素不会超过 100数组的大小不会超过 200示例 1:输入: [1, 5, 11, 5]输出: true解释: 数组可以分割成 [1, 5, 5] 和 [11].示例 2:输入: [1, 2, 3, 5]输出: false解释: 数组不能分割成两个元素和相等的子集.分析:对于该题可以看出是背包问题,即相等于判断能够从数组中选出若干个元素使其和等于sum/2,在使用之前需要对

2020-11-24 21:25:38 134

原创 leetcode 1143最长公共子序列-LCS

给定两个字符串 text1 和 text2,返回这两个字符串的最长公共子序列的长度。一个字符串的 子序列 是指这样一个新的字符串:它是由原字符串在不改变字符的相对顺序的情况下删除某些字符(也可以不删除任何字符)后组成的新字符串。例如,“ace” 是 “abcde” 的子序列,但 “aec” 不是 “abcde” 的子序列。两个字符串的「公共子序列」是这两个字符串所共同拥有的子序列。若这两个字符串没有公共子序列,则返回 0。示例 1:输入:text1 = “abcde”, text2 = “ace”

2020-11-24 19:54:39 85

原创 leetcode 860 柠檬是找零--模拟(贪心)

在柠檬水摊上,每一杯柠檬水的售价为 5 美元。顾客排队购买你的产品,(按账单 bills 支付的顺序)一次购买一杯。每位顾客只买一杯柠檬水,然后向你付 5 美元、10 美元或 20 美元。你必须给每个顾客正确找零,也就是说净交易是每位顾客向你支付 5 美元。注意,一开始你手头没有任何零钱。如果你能给每位顾客正确找零,返回 true ,否则返回 false 。示例 1:输入:[5,5,5,10,20]输出:true解释:前 3 位顾客那里,我们按顺序收取 3 张 5 美元的钞票。第 4 位

2020-11-23 20:04:23 99

原创 leetcode 452-用最少数量的箭引爆气球--贪心

用最少数量的箭引爆气球在二维空间中有许多球形的气球。对于每个气球,提供的输入是水平方向上,气球直径的开始和结束坐标。由于它是水平的,所以纵坐标并不重要,因此只要知道开始和结束的横坐标就足够了。开始坐标总是小于结束坐标。一支弓箭可以沿着 x 轴从不同点完全垂直地射出。在坐标 x 处射出一支箭,若有一个气球的直径的开始和结束坐标为 xstart,xend, 且满足 xstart ≤ x ≤ xend,则该气球会被引爆。可以射出的弓箭的数量没有限制。 弓箭一旦被射出之后,可以无限地前进。我们想找到使得所.

2020-11-23 19:38:07 118

原创 有效的字母异位词-leetcode242

有效的字母异位词给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。示例 1:输入: s = “anagram”, t = “nagaram”输出: true示例 2:输入: s = “rat”, t = “car”输出: false说明:你可以假设字符串只包含小写字母。进阶:如果输入字符串包含 unicode 字符怎么办?你能否调整你的解法来应对这种情况?通过次数176,478提交次数280,045分析:此题较为简单,题目就是要求判断每个单词中包含.

2020-11-22 22:57:08 78

原创 记录力扣第一次周赛-第216场周赛

第一题:分析:该题非常简单,拼接起来检查即可,不做分析class Solution { public boolean arrayStringsAreEqual(String[] word1, String[] word2) { String str1 =""; for(String str:word1){ str1 += str; } String str2 ="";

2020-11-22 17:06:45 385

原创 leetcode 147 对链表进行插入排序

对链表进行插入排序。插入排序的动画演示如上。从第一个元素开始,该链表可以被认为已经部分排序(用黑色表示)。每次迭代时,从输入数据中移除一个元素(用红色表示),并原地将其插入到已排好序的链表中。插入排序算法:插入排序是迭代的,每次只移动一个元素,直到所有元素可以形成一个有序的输出列表。每次迭代中,插入排序只从输入数据中移除一个待排序的元素,找到它在序列中适当的位置,并将其插入。重复直到所有输入数据插入完为止。示例 1:输入: 4->2->1->3输出: 1->2-&

2020-11-20 20:10:45 81

原创 leetcode 455 分发饼干 简单贪心

假设你是一位很棒的家长,想要给你的孩子们一些小饼干。但是,每个孩子最多只能给一块饼干。对每个孩子 i,都有一个胃口值 g[i],这是能让孩子们满足胃口的饼干的最小尺寸;并且每块饼干 j,都有一个尺寸 s[j] 。如果 s[j] >= g[i],我们可以将这个饼干 j 分配给孩子 i ,这个孩子会得到满足。你的目标是尽可能满足越多数量的孩子,并输出这个最大数值。示例 1:输入: g = [1,2,3], s = [1,1]输出: 1解释:你有三个孩子和两块小饼干,3个孩子的胃口值分别是:1,

2020-11-19 12:37:12 53

原创 leetcode 22 括号生成-暴力法和回溯法

数字 n 代表生成括号的对数,请你设计一个函数,用于能够生成所有可能的并且 有效的 括号组合。示例:输入:n = 3输出:[“((()))”,“(()())”,“(())()”,“()(())”,“()()()”]方法一:暴力法相当于填满2n个字符数组,如果填满后符合括号规则,则添加到答案中,每个位置都有选和不选两种选择,所以总共有2^2n个选择,同时每个选择还需要有O(n)去判断是否符合规则char[] str 转换为 String,可以使用 new String(str);cl

2020-11-18 09:39:33 165

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除