![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法
文章平均质量分 52
CodeX0119
这个作者很懒,什么都没留下…
展开
-
买卖股票的最好时机
买卖股票的最佳时机这一题其实就是让我们求最大差值,不过是赚的最大差值,我们只需要进行一次遍历,然后每次遍历进行提取最小值,如果小于最小值则更新,并且求一下当前数和此前最小值的差值,如果差值大于前面所求的最大差值,则也进行更新,下面给出示例代码:class Solution {public: int maxProfit(vector<int>& a) { int n = a.size(); int max = 0, min = a[0]; //原创 2022-01-14 23:15:35 · 191 阅读 · 0 评论 -
判定字符是否唯一
解法一这个题大家一看觉得是不是很简单,我可以用一个整形数组来存数量啊,有不为1的不就不唯一吗,再或者我弄一个set集合,每次插入元素再每次检测元素个数不就好了,无增加的话不就是不唯一的吗。这两种方法虽说可行,且时间复杂度不高,但是空间复杂度比较高。题目也说了,如果不使用额外的数据结构,会很加分,那么有同学会说,那我就用暴力啊,轮询的方法,那样的话时间复杂度会达到O(n2),这样子的话时间复杂度有太高了,所以在这我用一种时间复杂度和空间复杂度都不高的方法。解法二其实解法二的思路和整形数组的思路很像,虽.原创 2021-11-18 00:02:34 · 358 阅读 · 0 评论 -
环路检测并找出入环点
判断链表是否有环比较容易,只需利用快慢指针判断是否相遇或者别的方法即可以判断,但是我们需要判断入环点就比较麻烦一点了。方法一:利用map或者unnorded_map这种方法比较简单,只需要遍历链表,把每一个链表节点insert进入map或者unnorded_map,然后每一次插入后都进行一次判断,看看是否元素个数加一,如果没有,那么插入的这个节点就是如幻点。由于这种方法比较简单,但是空间复杂度高,需要利用到map或者unnorded_map。我就不示例代码了,如果有需要可以评论区评论,这里我着重分析下.原创 2021-11-16 12:23:41 · 723 阅读 · 0 评论 -
利用1到7的随机数,产生一个1到10的随机数
这是我面试百度实习二面遇到的算法题,很可惜,我没做出来。。。。不过既然没有做出来,岂能善罢甘休!面试完通过思考,查询,终于把这题整出来了,也算是圆了一个小遗憾吧。利用 1到7 的随机数产生一个 1到10的随机数,要求是等概率的。倘若不是等概率就很好做了,直接乘9之后再除以7就可以得到答案了。可是,这样没有达到要求。我们可以先用1到7的随机数生成器减去1,rand7()-1这样就可以得到一个[0, 6]的随机数生成器,然后乘以7得到一个(0,7,14,21,28,35,42)的随机数生成器,然后都加上[原创 2021-09-12 01:25:25 · 4234 阅读 · 0 评论 -
串的模式匹配之kmp算法
串的模式匹配之kmp算法(这里写自定义目录标题)设有两个串s和t,串t的定位就是要在串s中找到一个与t相等的子串。通常把s称为目标串,把t称为模式串,因此串定位查找也称为模式匹配。模式匹配成功是指在目标串s中找到一个一个模式串t;不成功则是指目标串s中不存在模式串t。在介绍kmp算法之前,我首先介绍一下Brute-Force算法。即暴力算法。Brute-Force算法暴力算法采用穷举的方法,基本思路就是目标串的第一个字符开始和模式串的第一个字符若相等,则逐个比较后续字符。否则目标串的第二个字符就开始重原创 2020-11-17 10:56:48 · 2983 阅读 · 0 评论 -
反转链表
运用迭代法进行求解 代码如下class Solution {public: ListNode* reverseList(ListNode* head) { ListNode* head1 = NULL; ListNode* curr = head; while(curr){ ListNode* p = curr -> next; //记录下一个元素 curr -> next = he.原创 2021-03-08 23:42:03 · 80 阅读 · 1 评论