算法-括号问题

左神 中级提升班2-2

给你一个字符串,可以在任意位置添加括号,将其转化为一个完整的字符串,返回至少需要添加多少个括号

()()(())是完整的   ()(是不完整的

最小子结构一定是()

class Solution {     public int f(String s) {         char[] chs = s.toCharArray();         int cnt = 0, ans = 0;         for (int i = 0; i < s.length(); i++) {             if (chs[i] == '(') {                 cnt++;             } else {                 cnt--;                 if (cnt < 0) {                     ans++;                     cnt = 0;                 }             }          }         ans += cnt;         return ans;     } }

 

左神 中级提升班 3-1

给定一个合法的括号序列,计算其深度

空串的深度是0

()()()的深度是1

((()))的深度是3

class Solution {     public int f(String s) {         char[] chs = s.toCharArray();         int cnt = 0, ans = -1;         for (int i = 0; i < s.length(); i++) {             if (chs[i] == '(') {                 cnt++;                 ans = Math.max(ans, cnt);             } else {                 cnt--;             }         }         ans += cnt;         return ans;     } }

 

推荐这些技术文章:

算法-递归问题

左神 中级提升班2-1 n表示二叉树节点的个数 返回能够形成多少种不同的二叉树的结构 分析 解决一个原子问题 import java.util.Arrays; class Solution { public long[] cache; /** * @param n 二叉树节点的个数 * @return 能够形成多少种不同的二叉树结构 */ ...

算法练习——有效括号

使用栈,先将左括号入栈,然后遍历字符串,在对括号进行匹配
给定一个只包括 '(',')','{','}','[',']' 的字符串 s ,判断字符串是否有效。

//有效的括号
#include<iostream>
#include<stack>
#include<string>
#include<vector&g...

算法: 有效的括号

给定一个只包括 '(',')','{','}','[',']' 的字符串 s ,判断字符串是否有效。
有效字符串需满足:
左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。

func isValid(_ s: String) -> Bool {
let dict: [Character:Character] = [")":"(", "}":"{", "]":...

常见算法技巧

1、给定一个正数int型数组arr,和一个正数目标值target,随意从数组中取出任意个数字(不能重复取)求和,请问有多少种取法可以使总和刚好等于target
动态规划,空间压缩:
class Solution{
public void solve(int[] arr, int target) {
int[] dp = new int[target + 1];
...

欧几里得算法

int gcd(int a, int b)
{
if (a % b==0) return b;
else return gcd(b, a % b);
}

...

42.暴力匹配算法实现

public static int violenceMatch(String str1, String str2) {
char[] s1 = str1.toCharArray();
char[] s2 = str2.toCharArray();

int s1Len = s1.length;
int s2Len = s2.length;

int i = 0; /...

拓展欧几里得算法

裴蜀定理:
对任意的a,b,有 a*x+b*y = gcd(a,b);当b=0,有 gcd(a,b) = a;
当b≠0:
b*y + (a - [a/b]*b)*x = gcd(a,b);
b*y + a*x - [a/b]*b*x = gcd(a,b);
a*x + b*(y-[a/b]*x) = gcd(a,b);
发现,x 不变, y -= [a/b]*x;
模板:

int exgcd...

算法训练 Hanoi问题

code
#include<iostream>
#include<algorithm>
using namespace std;
int cnt = 0 ;
void fun(int n, int m, char a, char b, char c) {
if (n <= m) {
cnt++;
} else {
fun(n - m, m, a, c, ...

前端算法之组合

k=0或者S.length===k返回当前解
// S :数组,需要求组合的集合
// k : 取出元素个数
function combination(S, k) {
if (k === 0 || S.length === k) {
return [S.slice(0, k)]
}
const [first, ...others] = S
let r = []
r ...

算法-子串子序列最值问题

leetcode 32.最长有效括号 左神 中级提升班 3-2 class Solution { public int f(String s) { //1 char[] chs = s.toCharArray(); int n = s.length(); //表示以i结尾的最长有效子串 int[] dp =...

文章标题:算法-括号问题
文章链接:https://www.dianjilingqu.com/2044.html
本文章来源于网络,版权归原作者所有,如果本站文章侵犯了您的权益,请联系我们删除,联系邮箱:saisai#email.cn,感谢支持理解。
THE END
< <上一篇
下一篇>>