微软经典算法面试真题(带leetcode详解)

这篇博客介绍了微软经典面试题——可能的二分法,即如何在考虑人员相互不喜欢的情况下,将所有人分成两组。题目描述了输入参数和限制条件,并提供了解题思路,通过构建无向图,采用深度优先搜索(DFS)策略来检查是否能成功分组,避免冲突。源代码并未在摘要中给出,但提到了可以参考更多题解。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

微软面试题:可能的二分法

描述
给定一组 N 人(编号为 1, 2, …, N), 我们想把每个人分进任意大小的两组。
每个人都可能不喜欢其他人,那么他们不应该属于同一组。
形式上,如果 dislikes[i] = [a, b],表示不允许将编号为 a 和 b 的人归入同一组。
当可以用这种方法将每个人分进两组时,返回 true;否则返回 false。
1 <= N <= 2000
0 <= dislikes.length <= 10000
1 <= dislikes[i][j] <= N
dislikes[i][0] < dislikes[i][1]
对于 dislikes[i] == dislikes[j] 不存在 i != j
在线评测地址
样例1

输入:N = 4, dislikes = [[1,2],[1,3],[2,4]]
输出:true
解释:group1 [1,4], group2 [2,3]

样例 2

输入:N = 3, dislikes = [[1,2],[1,3],[2,3]]
输出:false

样例 3

输入:N &
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值