自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(52)
  • 收藏
  • 关注

原创 力扣面试题 08.11. 硬币 动态规划 完全背包 C语言解法

给定数量不限的硬币,币值为25分、10分、5分和1分,编写代码计算n分有几种表示法。(结果可能会很大,你需要将结果模上1000000007)

2025-01-17 15:48:59 270

原创 力扣leetcode 416.分割等和子集 动态规划 0-1背包

请你判断是否可以将这个数组分割成两个子集,使得两个子集的元素和相等。本题我参照代码随想录的五部曲步骤,练习0-1背包代码。数组可以分割成 [1, 5, 5] 和 [11]。物品即为元素,物品的重量和价值均为它的值。数组不能分割成两个元素和相等的子集。首先需要得出数组所有元素的和。背包容量即为元素和的一半。

2025-01-13 16:27:48 481

原创 力扣面试题 08.10. 颜色填充 C语言解法 深度优先 数组 矩阵

周围区域」是指颜色相同且在上、下、左、右四个方向上存在相连情况的若干元素。注意,右下角的像素没有更改为 2 ,因为它不属于初始坐标点的周围区域。初始坐标点位于图像的正中间,坐标 (sr,sc)=(1,1)。初始坐标点周围区域上所有符合条件的像素点的颜色都被更改成 2。编写函数,实现许多图片编辑软件都支持的「颜色填充」功能。请用新颜色填充初始坐标点的周围区域,并返回填充后的图像。表示,元素为初始颜色值。初始坐标点的行坐标为。时间、空间复杂度均为O(N^2)。待填充的图像用二维数组。

2025-01-10 11:15:29 428

原创 力扣面试题 08.09. 括号 C语言解法 回溯递归动态规划字符串

设计一种算法,打印n对括号的所有合法的(例如,开闭一一对应)组合。这样的len--是多此一举的。会自动恢复到调用之前的值,无需手动。说明:解集不能包含重复的子集。是局部变量,因此递归返回后,,因此每次递归调用返回后,你之所以在递归后使用。会恢复到递归前的值,

2025-01-09 14:49:18 701

原创 力扣面试题 08.08. 有重复字符串的排列组合 回溯剪枝递归 C语言

是 C 标准库提供的一个字符串比较函数,用来比较两个字符串。:待排序数组的指针,通常是数组的起始地址。对于字符串来说,它就是字符串的首地址。是 C 语言标准库提供的一个函数,它用于对数组进行排序。编写一种方法,计算某字符串的所有排列组合。:一个比较函数,它定义了两个元素之间的比较规则。:字符串的长度,表示有多少个字符需要排序。会调用这个比较函数来决定排序的顺序。是字符串的长度,即数组元素的个数。:数组中元素的个数。会将字符串中的字符进行排序。:这是比较函数的传递方式。来比较字符串中的字符。

2025-01-08 11:17:18 721

原创 力扣面试题 - 08.07.无重复字符串的排列组合 C语言解法 回溯递归dfs深度优先

无重复字符串的排列组合。编写一种方法,计算某字符串的所有排列组合,字符串每个字符均不相同。)画的图,可以参考一下。

2025-01-07 14:23:51 601

原创 力扣leetcode 77 - 组合 C语言解法 递归+回溯

个数的所有组合,经典解法是使用。这道题要求返回从范围。

2025-01-06 16:40:37 576

原创 力扣面试题 44 - 汉诺塔问题 C语言解法

在经典汉诺塔问题中,有 3 根柱子及 N 个不同大小的穿孔圆盘,盘子可以滑入任意一根柱子。一开始,所有盘子自上而下按升序依次套在第一根柱子上(即每一个盘子只能放在更大的盘子上面)。请编写程序,用栈将所有盘子从第一根柱子移到最后一根柱子。(2) 盘子只能从柱子顶端滑出移到下一根柱子;(3) 盘子只能叠在比它大的盘子上。(1) 每次只能移动一个盘子;

2025-01-03 14:20:23 440

原创 力扣面试题 43 - 递归乘法 C语言解法

写一个递归函数,不使用 * 运算符, 实现两个正整数的相乘。可以使用加号、减号、位移,但要吝啬一些。是一个类型表达式,用于描述一个二维数组的类型,而不需要具体的数组名字。这样的写法是合法的,下面分享评论区的一个很巧妙的代码(作者:0x7FFFFFFF)占用 1 字节,二维数组的总大小就是。能正确计算出这个类型所需的内存大小。

2025-01-02 11:12:33 529

原创 力扣面试题 42 - 幂集 C语言解法 回溯算法

编写一种方法,返回某集合的所有子集。说明:解集不能包含重复的子集。

2024-12-31 16:44:02 299

原创 力扣面试题 41 - 魔术索引 C语言解法 二分查找

给定一个有序整数数组,编写一种方法找出魔术索引,若有的话,在数组A中找出一个魔术索引,如果没有,则返回-1。若有多个魔术索引,返回索引值最小的一个。中,有所谓的魔术索引,满足条件。: 0下标的元素为0。

2024-12-30 11:19:14 422

原创 力扣面试题 - 40 迷路的机器人 C语言解法

设想有个机器人坐在一个网格的左上角,网格 r 行 c 列。机器人只能向下或向右移动,但不能走到一些被禁止的网格(有障碍物)。设计一种算法,寻找机器人从左上角移动到右下角的路径。返回一条可行的路径,路径由经过的网格的行号和列号组成。左上角为 0 行 0 列。如果没有可行的路径,返回空数组。0行0列(左上角) -> 0行1列 -> 0行2列 -> 1行2列 -> 2行2列(右下角)输入中标粗的位置即为输出表示的路径,即。以下C代码有参考题解区大佬:taopi。网格中的障碍物和空位置分别用。

2024-12-27 16:44:33 590

原创 力扣面试题 39 - 三步问题 C语言解法

三步问题。有个小孩正在上楼梯,楼梯有n阶台阶,小孩一次可以上1阶、2阶或3阶。实现一种方法,计算小孩有多少种上楼梯的方式。结果可能很大,你需要对结果模1000000007。

2024-12-26 11:05:14 1178

原创 什么是动态规划?内含代码示例

动态规划(Dynamic Programming, DP) 是一种在解决优化问题时非常常用的算法设计思想。它通过 分解问题 和 利用重叠子问题 的特点,将问题的解划分为子问题的解,并通过保存中间结果(记忆化或表格法)避免重复计算,从而显著提高效率。

2024-12-26 10:35:57 685

原创 力扣面试题 38 - 求和路径

给定一棵二叉树,其中每个节点都含有一个整数数值(该值或正或负)。设计一个算法,打印节点数值总和等于某个给定值的所有路径的数量。注意,路径不一定非得从二叉树的根节点或叶节点开始或结束,但是其方向必须向下(只能从父节点指向子节点方向)。和为 22 的路径有:[5,4,11,2], [5,8,4,5], [4,11,7]给定如下二叉树,以及目标和。

2024-12-25 10:11:49 298

原创 力扣面试题 37 - 节点间通路

给定有向图,设计一个算法,找出两个节点之间是否存在一条路径。

2024-12-24 17:05:59 475

原创 力扣面试题 36 - 检查子树

如果 T1 有这么一个节点 n,其子树与 T2 一模一样,则 T2 为 T1 的子树,也就是说,从节点 n 处把树砍断,得到的树与 T2 完全相同。你有两棵非常大的二叉树:T1,有几万个节点;T2,有几万个节点。设计一个算法,判断 T2 是否为 T1 的子树。此题相对书上原题略有改动。

2024-12-20 10:44:05 525

原创 力扣面试题 35 - 首个共同祖先

设计并实现一个算法,找出二叉树中某两个节点的第一个共同祖先。不得将其他的节点存储在另外的数据结构中。注意:这不一定是二叉搜索树。例如,给定如下二叉树: root = [3,5,1,6,2,0,8,null,null,7,4]节点 5 和节点 4 的最近公共祖先是节点 5。因为根据定义最近公共祖先节点可以为节点本身。节点 5 和节点 1 的最近公共祖先是节点 3。p、q 为不同节点且均存在于给定的二叉树中。所有节点的值都是唯一的。

2024-12-19 11:14:20 441

原创 力扣面试题 34 - 后继者

设计一个算法,找出二叉搜索树中指定节点的“下一个”节点(也即中序后继)。如果指定节点没有对应的“下一个”节点,则返回。

2024-12-18 10:26:51 372

原创 力扣面试题 33 - 合法二叉搜索树

根节点的值为 5 ,但是其右子节点值为 4。输入为: [5,1,4,null,null,3,6]。实现一个函数,检查一棵二叉树是否为二叉搜索树。时间复杂度、空间复杂度均为O(N)。

2024-12-17 10:32:56 424

原创 力扣面试题 32 - 检查平衡性 C语言解法

实现一个函数,检查二叉树是否平衡。在这个问题中,平衡树的定义如下:任意一个节点,其两棵子树的高度差不超过 1。

2024-12-06 16:13:24 687

原创 力扣面试题 31 - 特定深度节点链表 C语言解法

给定一棵二叉树,设计一个算法,创建含有某一深度上所有节点的链表(比如,若一棵树的深度为。返回一个包含所有深度的链表的数组。代码如下:(不得不说,C语言真的是麻烦死了)不懂的可以在评论区问我噢~

2024-12-05 11:35:29 665

原创 力扣面试题 30 - 最小高度树

给定一个有序整数数组,元素各不相同且按升序排列,编写一个算法,创建一棵高度最小的二叉搜索树。给定有序数组: [-10,-3,0,5,9],

2024-12-04 17:24:12 372

原创 力扣面试题 29 - 绘制直线

在第 0 行的第 30 位到第 31 位画一条直线,屏幕二进制形式表示为 [00000000000000000000000000000011],因此返回 [3]的 int 类型代表 -1,因此返回 [-1,-1,-1]已知一个由像素点组成的单色屏幕,每行均有。个像素点,所有像素点初始为。个像素点」为一组存放在一个。我们将在屏幕上绘制一条从点。现将每行的像素点按照「每。的直线(即像素点修改为。),请返回绘制过后的数组。中,再依次存入长度为。

2024-12-04 10:19:09 416

原创 力扣面试题 28 - 配对交换

编写程序,交换某个整数的奇数位和偶数位,尽量使用较少的指令(也就是说,位0与位1交换,位2与位3交换,以此类推)。C代码:(有史以来行数最少的题哈哈):num = 2(或者0b10)1 (或者 0b01)

2024-12-02 11:23:04 375

原创 力扣面试题 27 - 整数转换

A = 29 (或者0b11101), B = 15(或者0b01111)编写一个函数,确定需要改变几个位才能将整数A转成整数B。此题比较简单,没啥好说的~

2024-11-28 11:19:13 411

原创 力扣面试题 26 - 翻转数位

每次遇到一个 0 时,考虑将其变为 1,并将其两边的连续 1 段合并。如果连续 1 的段之间有一个 0 的间隔,合并后的长度为两段长度之和加 1。如果输入是负数(有符号整数的情况),需要特别注意其二进制补码表示。否则,如果输入本身已经是全 1 的情况,也需要特殊处理(无需修改即可输出结果)。请编写一个程序,找出你能够获得的最长的一串1的长度。中哪些部分连续包含 1,可以通过逐位扫描来实现。记录每一段连续的 1 的长度。遍历整个二进制位的过程中,维护一个变量用于记录最大连续 1 的长度,实时更新。

2024-11-26 11:01:32 372

原创 力扣面试题 - 25 二进制数转字符串

给定一个介于0和1之间的实数(如0.72),类型为double,打印它的二进制表达式。如果该数字无法精确地用32位以内的二进制表示,则打印“ERROR”。:0.1无法被二进制准确表示。

2024-11-22 10:57:36 340

原创 力扣面试题 - 24 插入

具体插入过程如图所示。,且从 0 位开始计算)。区域至少可容纳 5 位。对应的二进制数字插入。对应的二进制数字的第。构造一个掩码,掩码的第。,以及表示比特位置的。位为0,其他位为1。

2024-11-21 17:15:04 578

原创 力扣面试题 23 - 动物收容所

动物收容所。有家动物收容所只收容狗与猫,且严格遵守“先进先出”的原则。在收养该收容所的动物时,收养人只能收养所有动物中“最老”(由其进入收容所的时间长短而定)的动物,或者可以挑选猫或狗(同时必须收养此类动物中“最老”的)。换言之,收养人不能自由挑选想收养的对象。

2024-11-20 11:24:05 1524

原创 力扣面试题 22 - 栈排序

题目:栈排序。编写程序,对栈进行排序使最小元素位于栈顶。最多只能使用一个其他的临时栈存放数据,但不得将元素复制到别的数据结构(如数组)中。pushpoppeek和isEmpty。当栈为空时,peek返回 -1。

2024-11-18 15:11:00 478

原创 力扣面试题 21 - 化栈为队

,即虽然单次转移可能是 O(n),但由于每个元素最多只被转移两次(一次从。实现一个MyQueue类,该类用两个栈来实现一个队列。// 返回 false。弹出),所以平均时间复杂度仍然是 O(1)。C代码如下:不懂的在评论区可以问我噢~

2024-11-15 17:04:38 644

原创 力扣面试题 20 - 堆盘子

堆盘子。设想有一堆盘子,堆太高可能会倒下来。因此,在现实生活中,盘子堆到一定高度时,我们就会另外堆一堆盘子。请实现数据结构SetOfStacks,模拟这种行为。

2024-11-14 17:15:22 608

原创 力扣面试题 19 - 栈的最小值

采用双栈的方法。用一个栈存储当前的最小值,然后比较新入栈的元素与最小值谁最小,将更新的最小值放入min栈。与最小值一样的也要放进去。如果出栈的元素等于当前最小值,则min栈里也出栈,否则只出栈原来的栈。存储最小值的栈的栈顶元素即为当前的最小值。

2024-11-13 17:10:00 123

原创 力扣面试题 18 - 三合一

题目:三合一。描述如何只用一个数组来实现三个栈。你应该实现方法。stackNum表示栈下标,value表示压入的值。构造函数会传入一个stackSize参数,代表每个栈的大小。:当栈为空时`pop, peek`返回-1,当栈满时`push`不压入元素。(这个出题者有点不说人话,下面我会附上我对题目的理解与解释)这道题的要求是实现一个“三合一栈”数据结构,即使用一个数组来模拟三个栈。push(入栈),pop(出栈),peek(查看栈顶元素),以及判断栈是否为空的isEmpty。

2024-11-12 16:28:06 374

原创 力扣面试题 17 - 环路检测

如果链表中存在环,则 fast 指针最终将再次与 slow 指针在环中相遇。此时,fast 指针已经走完了环的 n 圈,因此它走过的总距离为 a+n(b+c)+b=a+(n+1)b+nc。根据题意,任意时刻,fast 指针走过的距离都为 slow 指针的 2 倍。因此,我们有a+(n+1)b+nc=2(a+b)⟹a=c+(n−1)(b+c)有了 a=c+(n−1)(b+c) 的等量关系,我们会发现:从相遇点到入环点的距离加上 n−1 圈的环长,恰好等于从链表头部到入环点的距离。,则在该链表中没有环。

2024-11-12 11:11:07 246

原创 力扣面试题 16 - 回文链表

我们可以将链表的后半部分反转(修改链表结构),然后将前半部分和后半部分进行比较。我们也可以使用快慢指针在一次遍历中找到:慢指针一次走一步,快指针一次走两步,快慢指针同时出发。当快指针移动到链表的末尾时,慢指针恰好到链表的中间。在并发环境下,函数运行时需要锁定其他线程或进程对链表的访问,因为在函数执行过程中链表会被修改。步骤三比较两个部分的值,当后半部分到达末尾则比较完成,可以忽略计数情况中的中间节点。执行步骤一,我们可以计算链表节点的数量,然后遍历链表找到前半部分的尾节点。:(本人没想出来,看看官方解法)

2024-11-11 16:00:43 198

原创 力扣面试题 15 - 链表求和

给定两个用链表表示的整数,每个节点包含一个数位。这些数位是反向存放的,也就是个位排在链表首部。编写函数对这两个整数求和,并用链表形式返回结果。

2024-11-11 13:55:10 119

原创 力扣面试题 14 - 链表相交

给你两个单链表的头节点headA和headB,请你找出并返回两个单链表相交的起始节点。如果两个链表没有交点,返回null。

2024-11-08 17:26:35 772

原创 力扣面试题 13 - 分割链表

给你一个链表的头节点head和一个特定值x,请你对链表进行分隔,使得所有小于x的节点都出现在大于或等于x的节点之前。

2024-11-08 15:53:14 155

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除