ZX2021
ZX2021
全部文章
分类
未归档(1)
题解(72)
归档
标签
去牛客网
登录
/
注册
ZX2021的博客
程序员的自我修养
全部文章
(共73篇)
题解 | #链表中的节点每k个一组翻转#
采用fast、slow快慢指针来进行分组,对每个分组使用头插法对链表进行翻转。使用curr_group_tail来记录当前组的尾部,即采用头插法时该节点为分组的首节点。进行到下一组时,curr_group_tail即是新链表的尾部。若剩下的节点不够k个则直接对链表进行链接即可。 /** * str...
链表
快慢指针
链表翻转
2021-08-02
0
415
题解 | #链表中的节点每k个一组翻转#
采用快慢指针,快指针与慢指针相距k个节点,每次分组后采用头插法让快指针到慢指针的节点翻转。如果最后不够k个节点,则直接拼接链表。注意每次分组后需要用新链表的尾节点去链表剩下没有遍历的节点以保证链表不会断。这里没有去记录尾节点,而是通过头节点去遍历得到尾节点,应该可以优化直接记录下尾节点。 /** ...
链表
翻转
2021-08-02
0
387
题解 | #单链表的排序#
从链表的第一个节点开始,找到最小的元素进行交换。依次进行,找到次小的元素。。。 /** * struct ListNode { * int val; * struct ListNode *next; * }; */ class Solution { public: /...
排序
链表
2021-08-02
0
365
题解 | #判断回文#
利用双指针,左指针指向字符串首部,右指针指向字符串尾部,左指针向右移动,右指针向左移动。移动时进行比较,若不相等则返回false,比较完若没有返回false表明是回文,则反回true class Solution { public: /** * 代码中的类名、方法名、参数名已经指定...
字符串
双指针
2021-08-02
0
386
题解 | #斐波那契数列#
递归求解即可,注意两个退出的条件。 class Solution { public: int Fibonacci(int n) { if(n==0) return 0; else if(n==1) return ...
递归
2021-08-02
0
294
题解 | #反转字符串#
采用左右两个指针,左指针指向字符串首部,右指针指向字符串尾部,左指针向右移动,右指针向左移动,每移动一次交换一次,移动到中间位置时结束。 class Solution { public: /** * 反转字符串 * @param str string字符串 *...
字符串
双指针
2021-08-02
0
427
题解 | #删除链表的倒数第n个节点#
使用快慢指针来解决,快指针比慢指针快n步,这样当快指针到链表尾时快指针刚才指向的是倒数的n个节点。 /** * struct ListNode { * int val; * struct ListNode *next; * }; */ class Solution { pub...
2021-08-02
0
502
题解 | #删除链表的倒数第n个节点#
将链表的节点存放到vector中,通过vector的size()与n的差得到节点的索引,通过索引删除即可。 /** * struct ListNode { * int val; * struct ListNode *next; * }; */ class Solution {...
链表
2021-08-02
0
430
题解 | #用两个栈实现队列#
使用一个stack会导致入队和出队的位置变换,使用两个stack时就再变一次,就变成了队列。插入时插入到stack2中,出队列时从stack1中出栈,若stack1中没有元素则将stack2中的元素压入到stack1中再继续从stack1中出栈即可。 class Solution { public:...
栈
2021-08-02
0
468
题解 | #合并有序链表#
遍历l2,将l2的节点加入到l1中,遍历l1做检查,如果l2的val比l1的大则插入到l1的首部(注意到l1已经被改变,所以需要一个变量来保持最终的l1),否则找到l2应该插入到l1的位置,插入即可。应该注意保持链表不会断。 /** * struct ListNode { * int va...
链表
2021-08-02
0
403
首页
上一页
1
2
3
4
5
6
7
8
下一页
末页