牛客444617693号
牛客444617693号
全部文章
分类
未归档(6)
读书笔记(1)
题解(3)
归档
标签
去牛客网
登录
/
注册
牛客444617693号的博客
全部文章
(共9篇)
写一个回文链表
给你一个单链表的头节点 head ,请你判断该链表是否为回文链表。如果是,返回 true ;否则,返回 false 。 解题思路:快慢指针将链表的后半部分反转(修改链表结构),然后将前半部分和后半部分进行比较。比较完成后我们应该将链表恢复原样。整个流程可以分为以下五个步骤: 1. 找到前半部分...
2021-08-30
0
476
查找数组中的元素
查找元素:题目:给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target ,写一个函数搜索 nums 中的 target,如果目标值存在返回下标,否则返回 -1。1.顺序查找 int search(int* nums, int numsSize, int target){ ...
2021-08-26
0
571
二叉树的先,中,后序遍历
先历序遍思路:1.访问根节点;2.访问当前节点的左子树;3.若当前节点无左子树,则访问当前节点的右子树;即考察到一个节点后,即刻输出该节点的值,并继续遍历其左右子树。(根左右)中历序遍思路:1.访问当前节点的左子树;2.访问根节点;3.访问当前节点的右子树。即考察到一个节点后,将其暂存,遍历完左子树...
2021-07-23
1
571
实现两个有序链表的合并
思路一:非递归两个链表是排序过的,所以我们只需要同时遍历两个链表,比较链表元素的大小,将小的连接到新的链表中即可。最后,可能有一个链表会先遍历完,此时,我们直接将另一个链表连接到新链表的最后即可。 struct listnode* merge_list(struct listnode* H1,str...
2021-07-22
0
557
题解 | #反转链表#
反转链表实际就是重新指向结构体中的next指针,我们需要修改下一个节点的next指针指向前一个节点。所以,在遍历链表时我们要逐个修改链表的指针指向。用递归来做,一直递归到链表的最后一个结点,该结点就是反转后的头结点,记作pHead。此后,每次函数在返回的过程中,让当前结点的下一个结点的 next 指...
2021-07-22
0
484
如何找出链表的倒数第K个元素?
思路:设置两个快慢指针former、later,先让快指针走k步,然后两个指针同步走,当快指针走到头时,慢指针就是链表倒数第k个节点。 struct listnode* get_k_end(struct listnode* H,int k) { struct listnode* former...
2021-07-22
0
523
删除单链表中的重复节点,并保留最开始出现的节点
思路:定义两个指针cur和p来逐个遍历链表,cur元素依次和p比较,直到p为NULL,cur向后移动一个。 struct listnode* delete_double_node(struct listnode* H) { if(H==NULL) return NULL; //判断是否需要...
2021-07-22
0
512
字符串倒序
写一个字符串的反转实现方法:方法1:通过位置交换实现反转#include <stdio.h>#include <string.h> int main(int argc, const char *argv[]){ char src[]="hello,world&...
2021-07-20
0
432
题解 | #合并两个有序的数组#
开始我采用归并算法,发现结果并不完善,当A没有元素时结果不正确,归并的程序如下:void merge(int* A, int ALen, int m, int* B, int BLen, int n) { int tmp[m+n]; int index=0; int i=0; ...
2021-07-18
0
0