
获得徽章 0
- 最近项目里用到了 React hook Form,用于表单验证挺好用的,推荐给大家评论10
- 22.括号生成
思路1: 暴力
暴力生成所有括号组合, 然后再判断该括号组合是否有效.
可以这样暴力生成, 比如结果集合一开始是["(", ")"], 然后遍历结果集合的每个元素分别拼接"(" 和 ")", 于是现在结果集合变成4个 ["((", "()", ")(", "))"], 然后一样遍历结果集合的每个元素分别拼接"(" 和 ")", 然后同上.....
至于判断是否是有效括号, 用一个变量去表示平衡度, 扫一遍括号组合, 遇到"("平衡度+1, 遇到 “)” 平衡度-1, 平衡度为负数要立刻返回false(说明右括号数量此时大于左括号数量), 最后判断平衡度是否是0即可
思路2: 回溯
如图按照该决策树进行回溯即可
减枝条件是 1、当已选择路径中右括号数量大于左括号, 2、第一个选择的符号为右括号.
退出条件是左括号和右括号数量等于n展开评论2 - /**
* 自己理解地写一个用桶排序进行乱序数组升序
* 1.初始化 len: 数组长度 | max: 数组最大值 | min: 数组最小值 | bar: 桶 | res: 结果数组
* 2.获取最大值和最小值
* 3.将数组的值放入每个桶中
* 3.1 确定当前值该放入桶哪个位置 - ((value - min)/(max - min) * len)
* 3.2 当前桶位置是否有数据
* 3.2.1 无数据 -> 放入空数组 -> 直接放入值
* 3.2.2 有数据 -> 桶内进行排序 -> 放入到合适的位置
* 4.将桶中的数据打平 -> 放入结果数组中 (可以原生实现或使用ES6语法糖flat())
*/展开评论3