- 博客(3)
- 收藏
- 关注
原创 队列中可以看到的人数(单调栈)
是多次利用栈,我们从所给数组的右端开始判断此人身高是否比下一个人身高高,True的话则将此人身高压入栈,Flase的话则判断下一个人身高与栈顶身高,如果大于栈顶身高则弹出栈顶身高,再次判断此时栈顶身高与下一个人身高,循环这个过程,直到栈顶身高>下一个人身高(这里如果最后形成了空栈,我们则将下一个人身高压入栈中)。从队伍末尾开始,维护一个单调栈,从栈底到栈顶,身高严格递减。单调栈是严格递减的,栈顶每个小于当前人身高的元素,都会被弹出栈,如果此时栈非空,那么栈顶元素表示下标为 i 的人能看到的最后一个人。
2024-07-20 12:13:19
881
原创 设计链表并实现添加删除等功能
当我们进行无哨兵链表代码书写时,尤其容易犯的错误就是在进行for或while循环时,出现空指针异常,即xxx.next或xxx.next.next时容易发生。=null条件的运用有时可以更容易地解答题目,简化代码;此外,对于头节点非空的判断非常重要。当然如果是拥有哨兵的链表,那么对此就不用作判断,所以建议还是要写带哨兵的链表,可以极大程度的简化代码,以及防止一些bug的出现;版本一代码较为繁复,从题目本身单个功能上进行实现,并未进行各个功能的融合实现;版本二简洁了有关功能的代码,将链表各个功能融合实现;
2024-07-16 00:14:15
315
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅