![](https://img-blog.csdnimg.cn/20210218113501562.jpg?x-oss-process=image/resize,m_fixed,h_224,w_224)
LeetCode初级算法习题
文章平均质量分 60
本专栏存放作者在做LeetCode初级算法习题是得到的一些做题心得。
GalaxyerKw
努力学习,不当鸽子✧*。٩(ˊωˋ*)و✧*。
展开
-
【链表】合并两个有序链表(C语言)(LeetCode基础算法题)
解题时,主要解决以下几个问题。①对两个有序链表里的数字进行综合排序,合二为一。先分别遍历两表,求知长度: PNode p=l1; int len1=0; PNode q=l2; int len2=0; while (p!=NULL) //分别求两个链表的长度 { len1++; p=p->next; } p=l1; while (q!=NULL) { len2++; ...原创 2021-02-21 15:43:48 · 332 阅读 · 0 评论 -
【字符串】实现strstr()函数。(C语言)(暴力优化+KMP)
【find the needle in haystack就是大海捞针的意思】二话不说,直接先试试看O(M*N)的暴力法,看看可不可以:#include<string.h>int strStr(char * haystack, char * needle){ int len_h=strlen(haystack); int len_n=strlen(needle); if (len_n==0) return 0; if (len_h<len_.原创 2021-02-20 15:21:36 · 211 阅读 · 0 评论 -
【字符串】字符串中的第一个唯一字符(C语言)(Hash及其优化)
乍一看这题,非常简单,直接从头开始暴力搜索,双重循环搞定。1min就敲出了代码:(错误示范)#include<string.h>int firstUniqChar(char * s){ int len=strlen(s); int i,j; int flag; for (i=0; i<=len-1; i++) { flag=0; for (j=0; j<=len-1; j++) { .原创 2021-02-18 16:23:09 · 1258 阅读 · 0 评论 -
【树】二叉树的最大深度(C语言)(递归法+优化)
我们使用C语言去解决他。查找二叉树的最大深度,有两个方法:递归法和迭代法。这篇文章,我们先学习递归。递归法【递归优化】递归的本体是每一个根节点。递归的主要思路:结点最大深度=max(左子树最大深度,右子树最大深度)+1(根节点本身)递归结束的标志:当递归变量为NULL,就返回0。代码是:int maxDepth(struct TreeNode* root){ if (root==NULL) return 0; else { return (.原创 2021-02-18 13:52:25 · 2149 阅读 · 4 评论 -
【字符串】整数反转(int最大最小值的防止溢出限定)
乍一看这个题目,也太简单了吧。就算是初学C语言的小白,这种题目也是直接秒杀的。但是!重点来了,这道题目给出了一个限制:如何对较大的数据处理,防止在反转时溢出(即int型的变量无法储存反转后的数据),这是这道题的关键。我们来有逻辑的思考这道题。①符号问题:这个整数可能是负数,需要我们判断处理。int flag; //处理正负号 if (x<0) { flag=0; x=-x; } else { .原创 2021-02-18 13:27:03 · 385 阅读 · 0 评论