牛客82035003号
牛客82035003号
全部文章
分类
题解(161)
归档
标签
去牛客网
登录
/
注册
牛客82035003号的博客
全部文章
(共200篇)
题解 | #二维数组中的查找#
首先得弄懂题目的意思:行列均递增有序。利用这个特点从左下角开始对比,小于x就往右边更大的找,大于x就往上面更小的找。 bool Find(int target, int** array, int arrayRowLen, in...
数组
2022-09-17
0
253
题解 | #划分链表#
首先搞清楚几个问题。 1、如果链表为空,返回空。 2、如果链表中根本没有x,怎么办?那么就把链表中比x小的数放到第一个比x大的数的前面。 3、反正最后的链表就是两部分:比x小的数全部在前部分,相对顺序不变;>=x的数在后半部分,相对位置不变。 那么就可以采用一次遍历,先...
双指针
链表
2022-09-17
0
306
题解 | #最长回文子串#
首先单独设置计算回文子串长度的函数。从中间向外围扩散找到左右不等时的边界就可求出回文子串的长度。 以A[0]为起点找回文串,直到A[len-2],共检查len-1次。 每次从A[i]开始是否存在回文子串时,分别判断奇数形式aba和偶数形式abba是否存在,取二者的大者为本轮找到的最大回文...
字符串
双指针
2022-09-17
0
380
题解 | #矩阵的最小路径和#
1、为了节省空间,就不专门建二维数组存储路径和,而直接在原数组中记录,将每个位置的权值改为到该位置的最短路径。 2、先处理首行,每个位置只可能从左边来,route[0][i]=route[0][i]+route[0][i-1],即从第二个位置开始均要加上前面位置的路径。 3、然后处理首列...
C
数组
2022-09-14
1
407
题解 | #链表内指定区间反转#
tip1:先找到待反转链表的前一个结点,然后把待反转的结点一个个拆下来用头插法构建一个反转的链表,最后把链表接回到原链表中去。 tip2:鉴于这里没有头结点,增加一个空的头结点更方便操作从第一个结点开始反转的情况。 tip3:注意链表尾部置空的问题。 struct List...
C
链表
2022-09-12
0
340
题解 | #重排链表#
1、找到后半段链表的起始位置,将后半段结点逐个拆下来用头插法进行反转, 2、然后把反转后的链表结点一个一个插入到前半段链表中,注意间隔一个插一个。 void reorderList(struct ListNode* head ) {&nbs...
C
链表
双指针
2022-09-09
0
292
题解 | #删除有序链表中重复的元素-II#
1.首先加上一个空的头结点,便于处理删除第一个结点的情况。 2.需要设一个pre指针跟踪工作结点及记录一路留下来的结点。 3.用2个指针p,q来比较结点值是否相同。 4.不同时,pre指向p,p指向q,q指向q->next。 5.相同时,继续看q的后面是否还有一样,直到...
C
链表
双指针
2022-09-08
4
393
题解 | #删除升序数组的重复元素(一)#
双指针。 遇到相同的,后指针后移一步。 遇到不同的,把后指针指向的元素复制到前指针的下一个位置,后指针再后移一位继续比较。 int reArrangeArray(int* nums, int numsLen ) { &nbs...
数组
C
双指针
2022-08-31
0
302
题解 | #链表的中间结点#
结点个数为奇数时只有一个中心结点,为偶数时有两个中心结点,返回第二个,
C
链表
双指针
2022-08-30
0
389
题解 | #无环单链表插值#
第一步:根据给的有序数组,用尾插法新建一个有序链表。 第二步:通过双指针找到结点应该插入位置的前驱和后继。 第三步:插入该结点。 struct ListNode* insert(int* A, int ALen, int&n...
C
链表
双指针
2022-08-30
0
425
首页
上一页
1
2
3
4
5
6
7
8
9
10
下一页
末页