2024年【算法】剑指 Offer II 085(1),2024年最新2024大厂C C++知识点总结

img
img

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以添加戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

    this.dfs(n, ans, new char[n \* 2], 0, 0);

    return ans;
}

private void dfs(int n, List<String> ans, char[] cs, int left, int right) {
    if (left == n && right == n) {
        ans.add(new String(cs));
        return;
    }

    if (left < n) {
        cs[left + right] = '(';
        dfs(n, ans, cs, left + 1, right);
    }
    if (right < left) {
        cs[left + right] = ')';
        dfs(n, ans, cs, left, right + 1);
    }
}

}




---


### c



#define MAX_SIZE 1430

void dfs(int n, int *returnSize, char **ans, char *cs, int left, int right) {
if (left == n && right == n) {
ans[(*returnSize)] = calloc((n * 2 + 1), sizeof(char));
strcpy(ans[(*returnSize)], cs);
++(*returnSize);
return;
}

if (left < n) {
    cs[left + right] = '(';
    dfs(n, returnSize, ans, cs, left + 1, right);
}
if (right < left) {
    cs[left + right] = ')';
    dfs(n, returnSize, ans, cs, left, right + 1);
}

}

/**
* Note: The returned array must be malloced, assume caller calls free().
*/
char **generateParenthesis(int n, int *returnSize) {
*returnSize = 0;
char **ans = malloc(MAX_SIZE * sizeof(char *));
char *cs = calloc((n * 2 + 1), sizeof(char));
dfs(n, returnSize, ans, cs, 0, 0);
return ans;
}




---


### c++



class Solution {
private:
void dfs(int n, vector &ans, string &buf, int left, int right) {
if (left == n && right == n) {
ans.push_back(buf);
return;
}

    if (left < n) {
        buf.push\_back('(');
        dfs(n, ans, buf, left + 1, right);
        buf.pop\_back();
    }
    if (right < left) {
        buf.push\_back(')');
        dfs(n, ans, buf, left, right + 1);
        buf.pop\_back();
    }
}

public:
vector generateParenthesis(int n) {
vector ans;
string buf;
dfs(n, ans, buf, 0, 0);
return ans;
}
};




---


### python



class Solution:
def generateParenthesis(self, n: int) -> List[str]:
ans = []

    def dfs(s, left, right):
        if left == n and right == n:
            ans.append(''.join(s))
            return
        if left < n:
            s.append('(')
            dfs(s, left + 1, right)
            s.pop()
        if right < left:
            s.append(')')
            dfs(s, left, right + 1)
            s.pop()

    dfs([], 0, 0)
    return ans



---


### go



func generateParenthesis(n int) []string {
var ans []string

var dfs func(cs []byte, left int, right int)
dfs = func(cs []byte, left int, right int) {
	if left == n && right == n {
		ans = append(ans, string(cs))
		return
	}

	if left < n {
		cs[left+right] = '('
		dfs(cs, left+1, right)
	}
	if right < left {
		cs[left+right] = ')'
		dfs(cs, left, right+1)
	}
}

dfs(make([]byte, n\*2), 0, 0)

return ans

}




---


### rust



impl Solution {
pub fn generate_parenthesis(n: i32) -> Vec {
let mut ans = Vec::new();

    fn dfs(n: usize, ans: &mut Vec<String>, buf: &mut String, left: usize, right: usize) {
        if left == n && right == n {
            ans.push(buf.clone());
            return;
        }
        if left < n {
            buf.push('(');
            dfs(n, ans, buf, left + 1, right);
            buf.pop();
        }
        if right < left {
            buf.push(')');
            dfs(n, ans, buf, left, right + 1);
            buf.pop();
        }
    }

    dfs(n as usize, &mut ans, &mut String::new(), 0, 0);

    ans
}

}




---


![在这里插入图片描述](https://img-blog.csdnimg.cn/e220604c021648edb8d4c7144d137937.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5LqM5b2T5a6255qE55m95bi95a2Q,size_20,color_FFFFFF,t_70,g_se,x_16)





![img](https://img-blog.csdnimg.cn/img_convert/1e46a0f8982d65dc1bea36b010e140d6.png)
![img](https://img-blog.csdnimg.cn/img_convert/7e19af11ac660490d15de0f9f690ed6d.png)

**网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。**

**[需要这份系统化的资料的朋友,可以添加戳这里获取](https://bbs.youkuaiyun.com/topics/618668825)**


**一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**

48)]

**网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。**

**[需要这份系统化的资料的朋友,可以添加戳这里获取](https://bbs.youkuaiyun.com/topics/618668825)**


**一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值