刷刷专题

Leetcode JAVA刷刷站(111)二叉树的最小深度

一、题目概述  二、思路方向          在Java中,要找出二叉树的最小深度,我们可以使用递归的方法。基本思路是,对于给定的根节点,如果它是空的,那么最小深度为0(但实际上,空树没有深度,但在这个问题的语境下,我们可以认为空树的最小深度为0,或者更准确地,我们应该处理空树的情况以避免返回0)。如果根节点不是空的,我们需要检查它的左右子树: 如果根节点没有左子树(或右子树),那么最

Leetcode JAVA刷刷站(101)对称二叉树

一、题目概述 二、思路方向         在Java中,要检查一个二叉树是否是轴对称的(也称为镜像对称的),你可以通过递归地比较树的左子树和右子树是否镜像对称来实现。轴对称的二叉树意味着树的左子树和右子树关于根节点对称,即左子树的每个节点都与右子树中相应位置的节点镜像对称。 三、代码实现   class TreeNode { int val; TreeNode left;

Leetcode JAVA刷刷站(98)验证二叉搜索树

一、题目概述 二、思路方向          在Java中,要判断一个二叉树是否是有效的二叉搜索树(BST),我们可以采用递归的方法,通过维护一个外部的范围(通常是Integer.MIN_VALUE到Integer.MAX_VALUE作为初始范围),来确保每个节点的值都在其左子树所有节点值的右侧,并且在其右子树所有节点值的左侧。 三、代码实现   class TreeNode {

Fastboot线刷“复活”之刷机心得(二)——线刷刷机

刷机的有不少的方法:卡刷、线刷、OTA。在这里我就简单介绍下:    1.卡刷:一般来说卡刷简单的可以理解为在内存卡中刷机,就是进入Recovery中刷入系统。    2.线刷:线刷其实可以简单的理解为用USB线刷机,一定要注意是文件路径和驱动。线刷包的文件名上有个FASTBOOT字样,而且大小会比卡刷大了很多,一般线刷包大小是179-189MB左右。(以下我会对此方法进行更详细的介绍

Leetcode JAVA刷刷站(97)交错字符串

一、题目概述 二、思路方向          为了验证字符串 s3 是否由 s1 和 s2 交错组成,我们可以使用动态规划(Dynamic Programming, DP)的方法来解决这个问题。        首先,我们需要定义状态 dp[i][j],它表示 s1 的前 i 个字符和 s2 的前 j 个字符是否能交错组成 s3 的前 i+j 个字符。         接下来,我们考虑状态

Leetcode JAVA刷刷站(93)复原IP地址

一、题目概述 二、思路方向         为了解决这个问题,我们可以使用回溯算法。回溯算法在这里非常适用,因为我们需要尝试在字符串中的不同位置插入点(.)来分割出可能的IP地址段,并且需要验证每个段是否满足条件(即,在0到255之间,且不以0开头但可以为0)。 三、代码实现  import java.util.ArrayList; import java.util.List

Leetcode JAVA刷刷站(94)二叉树的中序遍历

一、题目概述 二、思路方向         在Java中,中序遍历二叉树通常使用递归或迭代(使用栈)的方法来实现。这里我将提供两种方法的示例代码。 方法一:递归        递归方法相对直观,中序遍历的顺序是:先遍历左子树,然后访问根节点,最后遍历右子树。 class TreeNode { int val; TreeNode left; TreeNode right; Tree

Leetcode JAVA刷刷站(80)删除有序数组中的重复项 ||

一、题目概述   二、思路方向        为了解决这个问题,我们可以使用双指针技术。一个指针(我们称之为i)用于遍历数组,另一个指针(我们称之为j)用于记录不重复或只重复一次的元素应该放置的位置。同时,我们需要一个计数器来跟踪当前元素出现的次数。 具体步骤如下: 初始化两个指针i和j都指向数组的第一个元素,以及一个计数器count为1(因为当前元素至少出现了一次)。遍历数组(从第二个

Leetcode JAVA刷刷站(91)解码方法

一、题目概述 二、思路方向         这个问题是一个典型的动态规划问题,其中我们可以使用一个数组来存储到达每个位置时的解码方法的总数。        我们定义一个数组 dp,其中 dp[i] 表示字符串 s 的前 i 个字符(从索引 0 到 i-1)的解码方法总数。 初始化: dp[0] 的值取决于字符串的第一个字符。如果第一个字符是 '0',则没有解码方法,dp[0] = 0;否

Leetcode JAVA刷刷站(79)单词搜索

一、题目概述 二、思路方向        为了解决这个问题,我们可以使用深度优先搜索(DFS)或广度优先搜索(BFS)来遍历网格中的字符,并检查是否能形成给定的单词。这里,我提供一个基于DFS的解决方案。        在DFS中,我们需要维护一些状态,比如当前的位置(x, y)和已经访问过的字符。由于我们不能重复使用同一个单元格,我们需要一个与网格同样大小的布尔数组来记录哪些单元格已经

Leetcode JAVA刷刷站(76)最小覆盖子串

一、题目概述 二、思路方向         为了解决这个问题,我们可以使用滑动窗口的方法。滑动窗口是数组/字符串问题中常用的一个技巧,特别是用于寻找子数组或子字符串的问题。        这里的关键是,我们需要知道字符串t中每个字符的出现次数,并在遍历字符串s时维护一个窗口,这个窗口内的字符种类和数量需要能够“覆盖”字符串t中的所有字符。 以下是用Java实现的详细步骤: 初始化:使

Leetcode JAVA刷刷站(75)颜色分类

一、题目概述 二、思路方向        在Java中,要实现这个排序算法,我们可以使用三指针的方法,也称作荷兰国旗问题(Dutch National Flag Problem)。这个方法使用三个指针来分别追踪数组中小于、等于和大于中间值的元素的边界。在这个特定的问题中,中间值是1(代表白色),但我们实际上更关心的是将0(红色)放在前面,将2(蓝色)放在后面,而1(白色)则位于中间。

Leetcode JAVA刷刷站(69)x的平方根

一、题目概述 二、思路方向         在Java中,计算一个非负整数x的算术平方根,并返回其整数部分,你可以使用二分查找法。这是因为平方根函数是单调递增的,所以我们可以利用二分查找在合理的时间复杂度内找到结果。 三、代码实现  public class Solution { public int mySqrt(int x) { if (x == 0) { retur

刷刷前端手写题

闭包用途 防抖 描述         前面所有触发都被取消,最后一次执行,在规定时间之后才会触发,也就是说如果连续快速的触发,用户操作频繁,但只会执行一次 。         常用场景:输入框输入 代码实现 1、lodash的debounce函数 2、 当用户点击按钮时,debounce 包装的 getBtnValue 函数会延迟 3000 毫秒执行。如果在这 3000 毫秒内用户再

[ LeetCode ] 题刷刷(Python)-第35题:搜索插入位置

题目描述 给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。 nums 为 无重复元素 的 升序 排列数组 请必须使用时间复杂度为 O(log n) 的算法。 示例 示例 1: 输入: nums = [1,3,5,6], target = 5 输出: 2示例 2: 输入: nums = [1,3,5,6], tar

[ LeetCode ] 题刷刷(Python)-第58题:最后一个单词的长度

题目描述 给你一个字符串 s,由若干单词组成,单词前后用一些空格字符隔开。返回字符串中 最后一个 单词的长度。 单词 是指仅由字母组成、不包含任何空格字符的最大子字符串。 示例 示例 1: 输入:s = "Hello World" 输出:5 解释:最后一个单词是“World”,长度为5。示例 2: 输入:s = "   fly me   to   the moon  " 输出:4 解

刷刷刷刷算法

链表 24. 两两交换链表中的节点 /*** Definition for singly-linked list.* function ListNode(val, next) {* this.val = (val===undefined ? 0 : val)* this.next = (next===undefined ? null : next)* }*//*** @par

C++知识点总结穿插:真题刷刷刷Day 1

2023 CSP-J 初赛 1. 在 C++ 中,下面哪个关键字用于声明一个变量, 其值不能被修改?( 2 2 2 分) A. unsigned B. const C. static D. mutable 【答案】 B 【解析】 const 是定义常量的关键字,常量的值是无法改变的。 2. 八进制数 1234567 0 8 12345670_8 123456708​ 和 076

[ LeetCode ] 题刷刷(Python)-第49题:字母异位词分组

题目描述 给你一个字符串数组,请你将 字母异位词 组合在一起。可以按任意顺序返回结果列表。 字母异位词是由重新排列源单词的所有字母得到的一个新单词。 即将含有相同字符但排列顺序不同的字符串放入同一个组中。 示例 示例 1: 输入: strs = ["eat", "tea", "tan", "ate", "nat", "bat"] 输出: [["bat"],["nat","tan"],

实战!wsl 与主机网络通信,在 wsl 中搭建服务器。学了计算机网络,但只能刷刷面试题?那也太无聊了!这篇文章可以让你检测你的计网知识!

前言(碎碎念):每次发布文章时,我都是一个纠结的过程。因为我给自己写笔记时,只需要记录自己不清晰或者易忘的知识点就可以了,但一旦想要作为文章发布,那么我就得考虑到很多人是纯新手(就像我当初一样)。然后我就会一直想着怎么写才能对新手友好。但这样一来,就导致我太贪心了,结果文章越写越不满意,或者越写越繁多。很多太过简单的知识点我是真的一点也不想再记录了(比如最经典的配置环境变量……)。> _ 所以,

【leetcode刷刷】455.分发饼干 、376. 摆动序列 、53. 最大子序和

455.分发饼干 376. 摆动序列 其实贪心的想法,做过一次的话就不会很难想了。但这道题需要考虑的特殊情况比较复杂,包括平台什么的。最左边和最右边也需要考虑:最左边,添加一个平台。 可以假设,数组最前面还有一个数字,那这个数字应该是什么呢?之前我们在 讨论 情况一:相同数字连续 的时候, prediff = 0 ,curdiff < 0 或者 >0 也记为波谷。那么为了规则统一,针对序列[2

【刷刷刷,爽!】leetcode198. 打家劫舍

题目如上! 这是一道非常非常标准的初级动规题。属于走楼梯的进阶版。所以我们尝试把他变成走楼梯。 怎么变?或者说是怎么看成走楼梯。 答案是!!!! 看最后一个数。 往往会最有灵感。 比如示例1中[1,2,3,4],最后一个是4,他后面没有数字了,很容易就会想到两种情况,“我要达成最优解,带还是不带这个数字呢?” 此时,答案的后门就敞开了。 带了这个数,就要再加上隔一个数的那个数下的最优解,也就是

n9 android rom,三星N935L官方安卓9固件rom系统线刷刷机包:LUC-N935LKLU4CSE4

这个三星N935L手机也就是三星Galaxy Note Fan Edition的韩版手机了,这个手机在国内用的人也并不多,不过还是来分享一下咱们的这个手机的相关的固件包的下载了,这个手机的最新固件包是这个LUC-N935LKLU4CSE4,安卓9版本的,也是多件套形式的rom系统线刷包了,需要的小伙伴可以进行下载刷入了。 三星N935L官方固件rom刷机包:LUC-N935LKLU4CSE4

【leetcode刷刷】93.复原IP地址 、78.子集 、90.子集II

93.复原IP地址 跟之前的分割序列很像,所以也比较好想 class Solution:def restoreIpAddresses(self, s: str) -> List[str]:# 找3个分割点?# 最后一个分割点的时候,判断path,加入res# 不符合规则的就跳过self.res = []self.backtracking(s, 0, [])return self.resdef

【leetcode刷刷】39. 组合总和、40.组合总和II、131.分割回文串

39. 组合总和 一开始写的时候没注意到可以重复,注意到可以重复之后就去掉了start_index,但是出现了类似[2,2,3][2,3,2]这种重复。看了题解之后,发现加上start_index,但是进for循环的时候start_index还是i,这样就是既可以重复也不会重新取之前的数。 class Solution:def combinationSum(self, candidates:

牛客刷刷编程题python篇(二)

题目描述 六一儿童节,老师带了很多好吃的巧克力到幼儿园。每块巧克力j的重量为w[j],对于每个小朋友i,当他分到的巧克力大小达到h[i] (即w[j]>=h[i]),他才会上去表演节目。老师的目标是将巧克力分发给孩子们,使得最多的小孩上台表演。可以保证每个w[i]> 0且不能将多块巧克力分给一个孩子或将一块分给多个孩子。 输入描述: 第一行:n,表示h数组元素个数第二行:n个h数组元素第