- 为什么要使用工厂设计模式?
使用 Java 面向对象编程语言的开发小伙伴们,应该十分熟悉针对现实世界进行建模这个环节,将常见属性和行为封装成类,而要使用这些类就需要通过创建对象的形式来使用对应属性和触发对应的行为,在面向对象编程中创建与使用对象是最基础的操作了。但是创建对象有些时候常常又会遇到对某些对象的初始化又或者其它相对复
- 精选|2023 上半年周赛题目总结
2023年的上半年刚刚过去,上半年的周赛大家都有在好好做题嘛?你觉得周赛的题目怎么样呢?力扣君在后台也收到了这样一条留言:“想要周赛题目的汇总”,不得不说这位扣友你真是找对人了!因为在 LeetCode 站内,早已经有热心的扣友「灵茶山艾府」为大家做好了盘点,一起来看看吧!由于篇幅有限且也在不断完善
- 学习页改版啦,快来Get这份实用攻略!
不知道扣友们有没有注意到,熟悉的学习页面最近有了一点点不同,你没有看错,学习页面改版上新啦。细心的力扣君为大家准备了一张知识地图,扣友们可以带着这份学习道具「知识地图」,开启全新学习之旅 !大家可以哪里不会点哪里!沿着知识地图,你既可以系统性逐步地深入学习,按部就班地攀登知识高峰;也可以遵循勇于创新
- LeetCode 力扣官方题解 | 806. 写字符串需要的行数
806. 写字符串需要的行数「亚马逊、谷歌Google、奥多比Adobe」考题题目描述难易度:简单我们要把给定的字符串 S 从左到右写到每一行上,每一行的最大宽度为 100 个单位,如果我们在写某个字母的时候会使这行超过了 100 个单位,那么我们应该把这个字母写到下一行。我们给定了一个数组 wid
- 求职面试季|适用于小白的简历撰写攻略
3-4 月暖春来袭,校招与社招都已开始,各大公司也都开始了网申、高校宣讲会。但据粗略统计,大概只有 10% 左右的求职申请者可以通过简历关从而顺利进入到面试。近 90% 的求职申请者在简历投递后,被直接拒之门外。由此可见,简历对求职的重要性。在金三银四的黄金求职阶段,可以说简历的好坏是影响面试成败的
- LeetCode 力扣官方题解 | 953. 验证外星语词典
953. 验证外星语词典题目描述难易度:简单某种外星语也使用英文小写字母,但可能顺序 order 不同。字母表的顺序(order)是一些小写字母的排列。给定一组用外星语书写的单词 words,以及其字母表的顺序 order,只有当给定的单词在这种外星语中按字典序排列时,返回 true;否则,返回 f
- 方法探索|一场树形 DP 深度游
很多人会问刷多少道 DP 才能培养出 DP 感?其实答案就是多做,日积月累,多做的深层含义就是理解,可以先刷二叉树类的题目,又或者看看下面这位站内同学的分享,看看有没有启发。解题思路👉 834.树中距离之和其实这位同学在之前的第 328 场周赛中,也遇到过此类困难的题型。大家深究其实可以发现,可以用
- LeetCode 力扣官方题解 | 590. N 叉树的后序遍历
590. N 叉树的后序遍历题目描述难易度:简单给定一个 n 叉树的根节点 root ,返回其节点值的 后序遍历 。n 叉树 在输入中按层序遍历进行序列化表示,每组子节点由空值 null 分隔(请参见示例)。示例 1:输入:root = [1,null,3,2,4,null,5,6]输出:[5,6,
- 应用层|关于编程语言中的那些「锁」事
并发锁,在编程语言中并不陌生。不同的语言中,锁的使用大同小异,以 Java 语言中的锁最为典型。我们今天就从什么是锁、我们为什么需要锁、锁的分类、有关锁的应用这四个方面,一起来聊聊与锁有关的那些事。什么是锁在日常生活中,锁就是一个安全标志。我们通过上锁和解锁,实现安全离家和回家。在编程语言中,锁也是
- LeetCode 力扣官方题解 | 2049. 统计最高分的节点数目
2049. 统计最高分的节点数目题目描述难易度:中等给你一棵根节点为 0 的 二叉树 ,它总共有 n 个节点 ,节点编号为 0 到 n - 1 。同时给你一个下标从 0 开始的整数数组 parents 表示这棵树 ,其中 parents[i] 是节点 i 的父节点 。由于节点 0 是根 ,所以 pa
- 超级对话模型 ChatGPT,除了对话还能做什么?
这几天 ChatGPT 火爆全网,很多人还不明白,什么是 ChatGPT?说白了,它就是一款聊天机器人,你可以和它对话,模仿类似人类的对话,它是 OpenAI 目前推出的最新作品。有些同学只要和它聊一聊,就会变得停不下来,让很多不熟悉它的人会不由自主的“调戏”它,目前市面上也有很多的智能 AI 机器
- LeetCode 力扣官方题解 | 2055. 蜡烛之间的盘子
2055. 蜡烛之间的盘子(点击文末阅读原文查看题目)题目描述难易度:中等给你一个长桌子,桌子上盘子和蜡烛排成一列。给你一个下标从 0 开始的字符串 s ,它只包含字符 '*' 和 '|' ,其中 '*' 表示一个 盘子 ,'|' 表示一支 蜡烛 。同时给你一个下标从 0 开始的二维整数数组 que
- 初学者在力扣学习算法应该刷哪些题?
前言首先,大家要明白一个点,那就是我们刷题不是为了去刷题,刷题的目的是为了巩固数据结构与算法,那么也就是说刷题前我们就要学完一遍常见的数据结构与算法。不管是数组、树、堆等,最终对应在内存中的存储方式只有两种:数组(顺序存储)、链表(链式存储)。含义解析数组由于是紧凑连续存储,可以随机访问,通过索引快
- 数据结构和算法知识是否真的重要?
前言在很多程序员看来,数据结构,算法这类的东西感觉没用,在实践中用到的机会也很少,为什么呢?这个问题,我们可以反向来思考,大公司对算法尤其看重的理由是什么?原因锻炼程序员的基本功面算法题能看出一个程序员的基本功, 算法与数据结构是计算机领域最最基础的学科, 计算机领域中更高级的学科或多或少都涉及到算
- LeetCode 力扣官方题解 | 521. 最长特殊序列 Ⅰ
521. 最长特殊序列 I(点击文末阅读原文查看题目)题目描述难易度:简单给你两个字符串 a 和 b,请返回 这两个字符串中 最长的特殊序列 的长度。如果不存在,则返回 -1。「最长特殊序列」 定义如下:该序列为 某字符串独有的最长子序列(即不能是其他字符串的子序列)。字符串 s 的子序列是在从
- 编程生涯中,哪些好习惯值得坚持?
先说结论:重视模块化,重视抽象但不滥用,保持代码美观易读,先理顺逻辑,再写代码。当我们刚接触编程时,会在网上看到许多大牛写程序都十分注重模块化,因此许多同学就会模仿他们,之后同学们可能会去看 SICP,了解到了抽象的好处,然而就会记住在写代码时思考抽象类的问题,这些都是比较有帮助的。以往一直有这么一
- LeetCode 力扣官方题解 | 2104. 子数组范围和
2104. 子数组范围和(点击文末阅读原文查看题目)题目描述难易度:中等给你一个整数数组 nums。nums 中,子数组的 范围 是子数组中最大元素和最小元素的差值。返回 nums 中 所有 子数组范围的 和 。子数组是数组中一个连续 非空 的元素序列。示例 1:输入:nums = [1,2,3]输
- 技巧篇|算法小白如何快速且高效的刷力扣题?
算法萌新在刷力扣时,虽然已有一些算法基础但仍然出现一题都做不出来的现象,经常有以下困惑:1.代码写了又删、删了又写,写到一半才发现逻辑走不通,没有整体思路。2.不能分析出题目需要用到什么算法。那么想要高效地刷题首先要知道每道题目应该怎么做。刷题小技巧力扣上的 Easy 题分两种,一种是不需要算法逻辑
- LeetCode 力扣官方题解 | 258. 各位相加
258. 各位相加(点击文末阅读原文查看题目)题目描述难易度:简单给定一个非负整数 num ,反复将各个位上的数字相加,直到结果为一位数。返回这个结果。示例 1:输入: num = 38输出: 2 解释: 各位相加的过程为:38 --> 3 + 8 --> 1111 --> 1 + 1 --> 2由
- 进阶分享|做算法题的特别技巧及思路
前言众所周知,算法题主要有两大难点。一是「实现」,即算法本身的难度。二是「思路」,代表你能否想到使用这个算法来解决题目。并且对于有一定刷题基础的同学来说,力扣上大部分简单、中等题所涉及的算法都是非常常见的算法,即算法本身不存在难度,最大的难点在于「思路」,即如何想到适合本题的算法。而解决「思路」问题