小镇里有 n 个人,按从 1 到 n 的顺序编号。传言称,这些人中有一个暗地里是小镇法官。
如果小镇法官真的存在,那么:
小镇法官不会信任任何人。
每个人(除了小镇法官)都信任这位小镇法官。
只有一个人同时满足属性 1 和属性 2 。
给你一个数组 trust ,其中 trust[i] = [ai, bi] 表示编号为 ai 的人信任编号为 bi 的人。
如果小镇法官存在并且可以确定他的身份,请返回该法官的编号;否则,返回 -1 。
示例 1:
输入:n = 2, trust = [ [1, 2] ]
输出:2
示例 2:
输入:n = 3, trust = [ [1, 3], [2, 3] ]
输出:3
示例 3:
输入:n = 3, trust = [ [1, 3], [2, 3], [3, 1] ]
输出:-1
https://leetcode.cn/problems/find-the-town-judge
通过图的入度和出度来解题,根据题意,a信任b,则a的出度增加1,b的入度增加1。这样只有当一个人满足出度为0(不信任任何人),入度为n-1(除法官都信任法官)的时候,这个人就是法官。
public class Q997FindTheTownJudge {
public int findJudge(int n, int[][] trust) {
int[] inEdges = new int[n+1];
int[] outEdges = new int[n+1];
for (int[] ints : trust) {
outEdges[ints[0]]++;
inEdges[ints[1]]++;
}
for (int i = 1; i < n+1; i++) {
if (inEdges[i] == n-1 && outEdges[i] == 0){
return i;
}
}
return -1;
}
}
public class Q997FindTheTownJudgeTest {
private Q997FindTheTownJudge q = new Q997FindTheTownJudge();
@Test
public void test1() {
assertEquals(2, q.findJudge(2, new int[][]{{1,2}}));
}
@Test
public void test2() {
assertEquals(3, q.findJudge(3, new int[][]{{1,3},{2,3}}));
}
@Test
public void test3() {
assertEquals(-1, q.findJudge(3, new int[][]{{1,3},{2,3},{3,1}}));
}
}

一.面试总结 4月20号下午进行了一场大数据视频面试,总结一下踩坑点: 1.确定面试后,第一件事要和HR确定面试方式,具体时间、地点、什么软件、岗位JD等必须信息。 这里很多人有一个思想误区,认为问的太多会给HR不好的印象;其实大可不必,如果你通过了简历筛选,你就有权力使用公司招聘的人力资源。 2.要在面试10分钟前就进入面试的环境中,以防突发事件。 3.面试最开始都会有一个自我介绍环节,这个自我介绍环节,一定要慎之又慎,最好写下来,让朋友、长辈等审核多遍。 注:我面试时,在这踩了一个坑,自我介绍的时候踩了我要面试的岗位一脚,被技术面试官抓住了这一点
✨✨【Java牛客&力扣刷题特辑第五期】——诸佬们这些坑你们都踩过了吗?✔✨前言🎉🎉大家好!好久不见我是青花瓷,今天你刷题了吗?文章目录,从易到难,层层递进,如果每一道题都吃透,你一定会在做题方面有质的飞跃,关注我,一起学习算法,一起分享好的题型。博主将持续更新算法,大厂笔试题,经典算法题,易错题,如果觉得不错,点点赞支持一下,如果有错误的地方,欢迎指正✨✨下一期:算法篇之回溯算法作者介绍:🎓作者:偷偷敲代码的青花瓷✨👀作者的Gitee:代码仓库📌系列文章推荐:✨1.Java牛客&力扣刷题特辑第一期✨2.Java牛客&力扣刷题特辑第二期✨3.Java牛客&力扣刷题特辑第三期✨4.Java牛客&
🥪写在前面Hello朋友们😋,我是秋刀鱼🐟,一只活跃于Java区与算法区的新人博主~欢迎大家加入高校算法学习社区🏰:https://bbs.csdn.net/forums/Suanfa,社区里大佬云集,大家互相交流学习!从今天开始我将陆续更新《轻松拿捏大厂面试题》专栏文章,本专栏将挑选大厂出现频率极高的面试题做专题解读,本篇也是专栏的第一篇《反转链表篇》。🎉🎉主页:秋刀鱼与猫🎉🎉🎉🎉期待你的支持与关注~🎉🎉🍥目录🥪写在前面🍔反转链表🥗题目描述🌮解题分析🧀参考代码(Java语言)🍟反转链表II🥗题目描述🌮解题分析🧀参考代码(Java语言)🍕K个一组反转链表🥗题目描述🌮解题分析🧀参考代码(Java
目录栈和队列的区别:栈实现队列:题目描述:示例:画图解释:代码实现:队列实现栈:题目描述:示例:解法一:双队列实现栈代码实现:解法二:单队列实现栈代码实现:栈和队列的区别:队列和栈是两种不同的数据结构。它们有以下区别:(1)操作的名称不同。队列的插入称为入队,队列的删除称为出队。栈的插入称为进栈,栈的删除称为出栈。(2)可操作的方式不同。队列是在队尾入队,队头出队,即两边都可操作。而栈的进栈和出栈都是在栈顶进行的,无法对栈底直接进行操作。(3)操作的方法不同。队列是先进先出(FIFO),即队列的修改是依先进先出的原则进行的。新来的成员总是加入队尾(不能从中间插入),每次离开的成员总是队列头上(
个人简历:全栈领域新星博主,万粉博主、帮助初学者入门,记录自己的学习过程个人主页:天寒雨落的博客_CSDN博客-C,CSDN竞赛,python领域博主热门专栏:初学者入门C语言_天寒雨落的博客-CSDN博客 目录动态规划整数拆分题目思路代码执行结果动态规划其基本思想是将待求解问题分解成若干个子问题,先求解子问题,然后从这些子问题的解得到原问题的解,经分解得到子问题往往不是互相独立的,举个简单的例子:你知道两个1相加等于2,问你三个1相加你是拿前面的两个1相加的结果加上1呢,还是再用1+1+1,你肯定会用前面的那种方法对吧,这就是动态规划,(1+1)就是(1+1+1)的子问题,且并不是相互独立
这个问题不太可能帮助任何future的访问者;它只与一个小的地理区域、一个特定的时间点或一个非常狭窄的情况相关,这些情况并不普遍适用于互联网的全局受众。为了帮助使这个问题更广泛地适用,visitthehelpcenter.关闭9年前。我有一个非常简单的问题。一个XML站点地图最多可以有50.000个URL。假设我有1个和2个。还剩多少?49.999还是49.997?
这是一道面试题。假设表中有100万个元素和997桶无序列表。进一步假设哈希函数以相等的概率分布键(即每个桶有1000个元素)。找到不在表中的元素的最坏情况时间是多少?找到表中的一个?您如何改进这一点?我的解决方案:查找不在表中和在表中的元素的最坏情况时间都是O(1000)。1000是未排序列表的长度。改进它:(0)直截了当,增加桶数>100万。(1)每个桶都有一个第二个哈希表,它使用不同的哈希函数为第二个表计算哈希值。它将是O(1)(2)每个桶中都有一棵二叉搜索树。它将是O(lgn)。是否可以在空间和时间之间做出权衡。将两者保持在合理范围内。有什么更好的主意吗?谢谢!
🖊作者:Djx_hmbb📘专栏:数据结构😆今日分享:----------小Tips:虽然都是口服液体制剂,且看起来单支容量都一样,但是“藿香正气水”与“藿香正气口服液”的区别你知道吗?藿香正气水里含有40%-50%的乙醇,而藿香正气口服液不含有乙醇。同时藿香正气水不能和头孢一起服用(因为含有酒精),而藿香正气口服液可以和头孢一起服用。文章目录✔题目链接:✔题目:✔解题思路:遍历两次:先计算链表长短,再将指针移到该位置遍历一次:设计一个快指针(步长=2)和一个慢指针(步长=1)✔遍历两次-->代码详情:✔遍历一次-->代码详情:✔图解:家人们,点个![请添加图片描述](https://img-b
前言❤️铁汁们大家好,欢迎大家来到出小月的博客里,今天小月呢写了一道题目叫替换空格,但是呢,写完之后调试了半天不知道哪里错了,经过小月的坚持不懈,终于成功,来分享给大家小月的错误,希望大家看完我这篇文章都能够“涨芝士”,感觉小月写的还不错的话,记得👍🏻点赞加关注😘鼓励一下博主哦,不然下次可找不到我啦❗❗作者简介❤️作者的主页:出小月的《程序员历险记》❤️专栏:《C语言》,《数据结构初阶》😊希望大家都能够:好好学习,天天编程❗❗❗文章目录前言作者简介一、题目介绍二、题目链接三、小月的思路四、小月出现的错误错误1错误2五、正确代码总结一、题目介绍🐻请实现一个函数,把字符串s中的每个空格替换成"%2
必会基础部分👇👇👇👇👇👇,可以收藏下来慢慢看。文章目录一、易懂贪心算法分配问题455.分发饼干分发糖果区间问题435.无重叠区间练习题605.种花问题452.用最少数量的箭引爆气球763.划分字母区间122.买卖股票最佳时机Ⅱ406.根据身高重建队列665.非递减数列二、玩转双指针经典题目167.两数之和Ⅱ88.合并两个有序数组142.环形链表Ⅱ76.最小覆盖子串练习题680.验证回文字符串Ⅱ633.平方数之和524.通过删除字母匹配到字典里最长单词三、二分查找经典题目69.x的平方根34.在排序数组中查找元素的第一个和最后一个位置81.搜索旋转排序数组Ⅱ练习题目154.寻找旋转排序数组的最小