hot100【查缺补漏+打印线程abc】【2026.7.30打卡-java版本】
12. 路径总和给你二叉树的根节点root和一个表示目标和的整数targetSum。判断该树中是否存在根节点到叶子节点的路径这条路径上所有节点值相加等于目标和targetSum。如果存在返回true否则返回false。叶子节点是指没有子节点的节点。/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode() {} * TreeNode(int val) { this.val val; } * TreeNode(int val, TreeNode left, TreeNode right) { * this.val val; * this.left left; * this.right right; * } * } */ class Solution { public boolean hasPathSum(TreeNode root, int targetSum) { return dfs(root,targetSum); } public boolean dfs(TreeNode root,int targetSum){ if(root null){ return false; } //是从根节点到子节点要判断等于0的点是不是子节点 if(root.val targetSum root.left null root.right null){ return true; } boolean left dfs(root.left,targetSum - root.val); boolean right dfs(root.right, targetSum - root.val); return left || right; } }轮流打印abcpackage hot100; public class ThreadPrintingABC { public static class PrintABC{ private final int max; private int state 0; PrintABC(int max){ this.max max; } public void Print(String letter, int num){ for(int i 0; i max; i){ synchronized (this){ while(state%3 ! num){ try{ this.wait(); }catch(InterruptedException e){ e.printStackTrace(); } } System.out.println(Thread.currentThread().getName() - num); state; notifyAll();; } } } } public static void main(String[] args) { PrintABC printABC new PrintABC(5); Thread a new Thread(() - printABC.Print(A,0),Thread-A); Thread b new Thread(() - printABC.Print(B,1),Thread-B); Thread c new Thread(() - printABC.Print(C,2),Thread-c); a.start(); b.start(); c.start(); } }基于我们整个对话我把所有核心知识点为你浓缩成一套“总结笔记”。看完这篇面试问到这个题你就能对答如流了。1. 核心结论你的代码完全正确你写的synchronized wait/notifyAll方案是标准且满分的面试答案。唯一要改的是输出语句把num换成letter否则打印的是数字 0/1/2 而不是 A/B/C。2. 终于弄懂的对象与内存房子与遥控器对象 堆内存里的实体房子执行new PrintABC(5)就是在堆里盖了一栋房子里面放着max5和state0。引用 栈里的遥控器变量printABC存储在栈中指向堆里的房子。三个线程共享的前提A、B、C 三个线程的 Lambda 表达式捕获的都是同一个遥控器printABC所以它们操作的是同一栋房子。static的真相你问的public static class PrintABC叫静态嵌套类意思是不持有外部类ThreadPrintingABC的遥控器独立图纸这跟“类变量”完全是两码事。state不需要加static。因为是三个线程操作同一个对象所以state天然共享。如果加了static虽然也能跑但不利于以后创建多个独立打印机会互相干扰。3. 线程到底是怎么按顺序跑的锁与等待池唯一锁对象三个线程争抢的锁是堆里那栋printABC房子自带的一把“大门锁”Monitor存储在对象头里。运行流程A 线程抢到锁发现state%3 0打印 Astate变成 1notifyAll()唤醒大家退出同步块。B 抢到锁发现state%3 1打印 Bstate变 2唤醒大家。C 抢到锁发现state%3 2打印 Cstate变 3即 0唤醒大家。下一轮A 再次抢到锁或者 B 抢到但检查不通过乖乖wait让出如此循环。wait()的妙用调用wait()时线程会释放锁并进入“等待室”WaitSet把锁让给下一个线程被唤醒后它必须先重新抢到锁才能从wait()处继续往下执行。4. 两个写法的区别面试官可能会追问你的写法synchronized notifyAll我给的写法ReentrantLock Condition唤醒所有线程惊群效应不满足条件的再次阻塞等待CPU 稍有消耗但代码更简单。精准唤醒下一个线程如只唤 B性能更高但代码稍复杂。面试回答技巧如果面试官问缺点你就说“如果用notifyAll线程会全部醒来抢锁造成不必要的上下文切换但用while检查条件可以确保安全在简单场景下完全够用。”如果面试官问优化你就说“可以用LockCondition精准唤醒避免惊群。”5. 终极避坑口诀背下来面试稳了用while不用if防止虚假唤醒醒来后必须再检查一遍是否轮到我了。wait()必须释放锁否则别的线程进不来程序就死锁了。共享的根源是“同一个对象”不是static关键字。sqlselect name from Customer where referee_id IS NULL or referee_id ! 2;碎碎念后续会更新每天学习的八股和算法题开始准备秋招的第81天。努力连续更新100天总结加油吧

相关新闻

OPSD 让模型拿标准答案教自己,在学生自己的推理路径上逐 token 纠错

OPSD 让模型拿标准答案教自己,在学生自己的推理路径上逐 token 纠错

一次 Qwen3-1.7B 训练里,GRPO 每题采 8 条轨迹,单条上限 16,000 token;OPSD 只采 1 条,上限 1,024 token。前者生成得更多,却在前 100 步中有超过一半批次的组内奖励标准差为 0,拿不到梯度。 如果只看采样预…

2026/7/31 2:44:23 阅读更多 →
【2026年百度暑期实习/秋招- 7月30日-后端AI Coding-第二题- 余数游走】(题目+思路+JavaC++Python解析+在线测试)

【2026年百度暑期实习/秋招- 7月30日-后端AI Coding-第二题- 余数游走】(题目+思路+JavaC++Python解析+在线测试)

题目内容 给定一个长度为 nnn 的整数序列 a1,a2,…,ana_1,a_2,\dots,a_na

2026/7/31 2:44:23 阅读更多 →
Docker 超全基础操作速查手册|镜像 / 容器 / 数据卷常用命令汇总

Docker 超全基础操作速查手册|镜像 / 容器 / 数据卷常用命令汇总

Docker 是当下后端、运维开发必备的容器化工具,日常开发、服务器部署几乎离不开镜像拉取、容器启停、数据持久化等基础操作。很多新手刚接触时容易混淆各类命令参数,每次使用都要翻文档。本文整理 Docker 三大核心模块:镜像 Image、容器 Cont…

2026/7/31 2:44:23 阅读更多 →

最新新闻

Grok排队机制解析与提示词优化:提升AI服务响应效率

Grok排队机制解析与提示词优化:提升AI服务响应效率

在日常使用大语言模型服务时,很多开发者都遇到过这样的场景:提交了一个复杂的提示词请求,却收到"系统繁忙,请稍后再试"的响应。特别是在处理代码生成、数据分析等需要较长时间计算的任务时,这种排队等待的情…

2026/7/31 3:14:32 阅读更多 →
AI配音停顿优化实战指南(停顿失真率下降73%的工业级调参公式)

AI配音停顿优化实战指南(停顿失真率下降73%的工业级调参公式)

更多请点击: https://kaifayun.com 第一章:AI配音停顿优化的工业级价值与挑战 在语音合成(TTS)大规模落地的工业场景中,自然停顿不再是锦上添花的细节,而是决定用户信任度与任务完成率的核心指标。播客生成…

2026/7/31 3:13:32 阅读更多 →
清表土方量精准计算:从原理到实战的方格网法全解析

清表土方量精准计算:从原理到实战的方格网法全解析

1. 项目概述:从“大概估”到“精准算”的跨越干了十几年工程,从路桥到房建,再到市政园林,几乎每个项目都绕不开“清表”这道工序。所谓清表,就是把施工区域地表那些不能作为地基承载层的杂物清理掉,比如植被…

2026/7/31 3:13:32 阅读更多 →
MPI+OpenMP混合并行编程:从环境搭建到性能调优的四阶段实战指南

MPI+OpenMP混合并行编程:从环境搭建到性能调优的四阶段实战指南

1. 项目概述:为什么我们需要混合并行编程?如果你已经写过一些C的并行程序,用过OpenMP在单台机器上榨干CPU性能,也尝试过MPI在多台机器之间传递消息,那你可能已经隐约感觉到一种“割裂感”。OpenMP用起来是真方便&#…

2026/7/31 3:13:32 阅读更多 →
生成对抗网络黑箱解密(含梯度流热力图+隐空间拓扑映射):用可解释性框架定位mode collapse根源,精准修复率提升63%

生成对抗网络黑箱解密(含梯度流热力图+隐空间拓扑映射):用可解释性框架定位mode collapse根源,精准修复率提升63%

更多请点击: https://codechina.net 第一章:生成对抗网络黑箱解密(含梯度流热力图隐空间拓扑映射):用可解释性框架定位mode collapse根源,精准修复率提升63% 生成对抗网络(GAN)的训…

2026/7/31 3:13:32 阅读更多 →
SRC挖洞入门实战:从零到一掌握白帽子漏洞挖掘与变现

SRC挖洞入门实战:从零到一掌握白帽子漏洞挖掘与变现

1. 项目概述:SRC挖洞,一个可以“变现”的安全技能如果你对网络安全感兴趣,或者想找一份能带来实际收益的副业,那么SRC(Security Response Center,安全应急响应中心)挖洞绝对是一个值得投入的方向…

2026/7/31 3:13:32 阅读更多 →

日新闻

物理复制比逻辑复制好在哪?数据库复制原理详解

物理复制比逻辑复制好在哪?数据库复制原理详解

数据库复制是把主库数据同步到备库的机制,分为逻辑复制和物理复制两种。逻辑复制传输的是 SQL 语句或行变更事件,物理复制传输的是存储引擎底层的物理日志。阿里云 PolarDB(云原生数据库)采用物理复制,在同步延迟、数据…

2026/7/31 0:00:34 阅读更多 →
BilibiliDown:3分钟学会B站视频下载的终极指南

BilibiliDown:3分钟学会B站视频下载的终极指南

BilibiliDown:3分钟学会B站视频下载的终极指南 【免费下载链接】BilibiliDown (GUI-多平台支持) B站 哔哩哔哩 视频下载器。支持稍后再看、收藏夹、UP主视频批量下载|Bilibili Video Downloader 😳 项目地址: https://gitcode.com/gh_mirrors/bi/Bilib…

2026/7/31 0:00:34 阅读更多 →
有哪些游戏数据AI平台?游戏行业Data+AI融合方案盘点

有哪些游戏数据AI平台?游戏行业Data+AI融合方案盘点

当前,游戏行业的“DataAI融合”已从概念验证进入价值落地阶段。根据IDC 2025年数据,中国AI游戏云市场规模已达18.6亿元;同时,游戏研发环节AI渗透率高达86%,生成式AI内容普及率超过50%。面对庞大的市场,游戏…

2026/7/31 0:00:34 阅读更多 →

周新闻

深度学习道路桥梁裂缝检测系统 道路桥梁裂缝检测数据集 道路桥梁病害识别检测数据集

深度学习道路桥梁裂缝检测系统 道路桥梁裂缝检测数据集 道路桥梁病害识别检测数据集

深度学习道路桥梁裂缝检测系统 数据集6000张 完整源码已标注数据集训练好的模型环境配置教程程序运行说明文档,可以直接使用!系统支持图片、视频、摄像头等多种方式检测裂缝,功能强大实用。 1数据集6000张 8各类别

2026/7/31 1:03:03 阅读更多 →
深度学习YOLO模型如何训练 PUBG 绝地求生目标检测数据集

深度学习YOLO模型如何训练 PUBG 绝地求生目标检测数据集

pubg数据集 精选原图1.42万数据 1.49万标签 无任何重复、算法增强或冗余图像! pubg绝地求生目标检测数据集 1分类:e_body,14905个标签,txt格式 共计14244张图,99%为640*640尺寸图像 适合yolo目标检测、AI训练关键词&am…

2026/7/29 14:34:28 阅读更多 →
Apex英雄目标检测数据集 深度学习框架YOLO如何训练APEX数据集

Apex英雄目标检测数据集 深度学习框架YOLO如何训练APEX数据集

Apex检测数据集数据集详情检测类别: allies enemy tag图片总量:7247张训练集:5139张验证集:1425张测试集:683张标注状态:全部已标注,即拿即用数据格式:支持YOLO格式及其他格式&#…

2026/7/29 15:00:03 阅读更多 →

月新闻