- 博客(16)
- 收藏
- 关注
原创 [142] Linked List Cycle II 环形链表II
[C++]龟兔赛跑,在一个环形跑道上,如果两个人(或动物)以不同的速度同向赛跑,跑得快的人最终必然会从后面“套圈”追上跑得慢的人。
2025-12-21 15:47:44
341
原创 [160] Intersection of Two Linked Lists 链表相交
[C++] 真正的相交,必须是物理上(内存地址上)的汇合,而不是节点值恰好相等。
2025-12-17 16:59:45
336
原创 [19] Remove Nth Node From End of List 删除链表的倒数第N个节点
[C++] 使用快慢指针一趟扫描,找到待删除节点的前驱节点。
2025-12-15 21:16:46
160
原创 [206] Reverse Linked List 反转链表
[C++]pre指向当前节点前一个节点。在反转过程中,它代表了已经反转好的那部分链表的头。当 cur 变为 nullptr 时,也就是循环结束,pre 正好指向新链表的头节点。
2025-11-27 11:55:38
216
原创 [59] Spiral Matrix II 螺旋矩阵II
[C++]通过维护 top, bottom, left, right 四个指针来模拟螺旋收缩的过程,每条边遍历后立即收缩边界并检查是否需要 break,循环退出条件是两个边界交错,一旦交错说明已经填充完所有格子,而重叠时(=)代表螺旋已经收缩到最后一行或者最后一列。
2025-11-23 11:49:46
827
原创 [209] Minimum Size Subarray Sum 长度最小的子数组
[C++]两个单调性 :题干数组元素都是正数。固定l,h右移,sum单调递增;固定h,l右移,sum单调递减。
2025-11-19 18:25:02
940
原创 [977] Squares of a Sorted Array 有序数组的平方
[C++]一个有序数组中,其元素的平方最大值一定产生于数组的两端。所以不直接生成结果数组,而是反向填充,每次都只找到待处理元素的最大值。
2025-11-18 19:45:35
626
原创 [704] Binary Search 二分查找
[C++] 适用于“无重复元素的有序数组”或“不需要查找特定位置”的场景,本质上是平衡二叉搜索树(BST)
2025-11-16 21:47:19
231
原创 【图灵完备(Turing Complete)】四、处理器架构2
我们的新架构LEG要采用一种新的条件判断命令,和前面的新ALU一样,它对整条命令的中间两个参数进行比较,这两个参数可以被解释为是地址,或者是立即数,对它们进行比较后得出一个真或假的判断结果,然后根据这个结果来决定是否进行跳转,如果要跳转的话,最后一个参数就是跳转指针,指向程序模块中的某个地址。这里的立即数概念和原始图灵机中的完全一致,不过在那时,受限于指令宽度,我们能获取的立即数的最大值也只有十进制63,而到了这里,我们的完整命令可以有4个字节,那么随之而来的好处就是可取数值更宽了。
2024-12-19 23:11:22
2253
原创 【图灵完备(Turing Complete)】 三、处理器架构
其实和上一关没有本质区别,只是把关卡左上角的指令输入元件替换成了程序模块,可以看做是一个ROM,内部有一大堆的寄存器阵列,且已经固化好了程序。从本阶段开始,我们的电路再也不能随意“私拉乱建”了,而是要认真考虑规划,否则的话,就算过了当前关卡,也很难保证在后续关卡中电路还能正常运行,这是本阶段必须重点考虑的方面。这里对指令字节的最高2bit所能产生的4种状态进行了解释,分别对应了4种模式,显然是要实现一个24译码器,那我们可以直接把38译码器拿过来用,不用重新搭了。接着把数据总线挂接好。
2024-12-19 23:00:34
2548
原创 【图灵完备(Turing Complete)】二、算术运算/存储器
而第二个输入就是待写入的数据。说白了,这个元件有两个输入,第一个输入就是“使能”引脚,第二个输入才是“数据”引脚。本关之所以叫“小盒子”,是因为它限定了我们的布线空间,真的就像在有限硅晶圆上搭建电路一样,不再让我们“铺张浪费”了,而任务是要在这个有限空间内,搭建4个字节的寄存器。本关有两个输出,一个作为和位,一个作为进位位。在前面的两关我们体验过根据列式子来搭电路的妙招之后,在本关也是一样,先把对应的真值表画出来,本关开始接触的输入值不再是1bit的0或1信号了,而是一个字节信号,有8个bit。
2024-12-19 22:50:37
2786
原创 【图灵完备(Turing Complete)】一、基础逻辑电路
和之前一样,拖出导线连接输入端,再拖一根线连到输出端,然后仔细阅读底部中文提示,在灰色的小圆点上点出正确的颜色即可通关。至此,我们拥有了:与门、或门、非门,以及与非门、或非门。由于非门的存在,它永远输出1,所以当或门的另一个输入无论处于什么状态,总体电路的输出永远都是1。在上一轮关卡中得到了 与非门,那么这次再加一个 非门,负负得正,就得到了一个 与门。三路或门,这个没啥好说的,在普通两路或门的基础上再加一个或门即组成一个三路或门。同或门XNOR,仔细看看真值表,会发现实际上就是把异或门的输出取个反。
2024-12-13 22:42:45
1298
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅