LeetCode
princeteng
这个作者很懒,什么都没留下…
展开
-
《剑指Offer》字符流中第一个不重复的字符
实现下面两个函数,Insert函数插入一个字符,FirstAppearingOnce函数返回数据流中第一个出现的字符。class Solution{public: //Insert one char from stringstream void Insert(char ch) { } //return the first appearence once char in current stringstream char FirstAppear.原创 2020-06-06 16:43:35 · 163 阅读 · 0 评论 -
LeetCode716:最大栈
这是一道被锁住的题,需要LeetCode会员才能做。还好lintcode上也有。最大栈分析:前4个操作比较简单,最难处理的是第5个操作。思路:1.可以使用两个栈,但是这样的复杂度为O(n),不太好。2.使用list+map,list中存放数据,map中存放值以及值对应的所有迭代器的集合,迭代器的集合使用vector存储,vector尾部的迭代器为当前值对应的最靠近栈顶的迭代器,那么我们在删除栈中最靠近栈顶的最大元素时,只需要获得最大值对应vector的最后一个元素(迭代器),然后在list和ve原创 2020-05-13 11:55:07 · 808 阅读 · 0 评论 -
leetcode 5379. 石子游戏 III
题目链接:5379. 石子游戏 III动态规划:状态定义:dp[i]表示从i往后能多拿多少。状态转移:解释:如果先手选择拿1堆,即nums[i],则后手将会多拿dp[i+1],先手比后手多拿nums[i] - dp[i+1];如果先手选择拿2堆,即nums[i]+nums[i+1],则后手将会多拿dp[i+2];如果先手选择拿3堆,即nums[i]+nums[i+1]+nu...原创 2020-04-05 12:46:16 · 117 阅读 · 0 评论 -
LeetCode460:LFU缓存-hard
1.题目参考题解:2. 数据结构数据结构:哈希表,链表+链表,cnt2key是一个频次链表,其内部每个结点包含一个频次值与另一个链表(相同频次的key,尾部为最久没有被访问过的)。list<pair<int, list>> cnt2key;struct node{int value;int cnt;list<pair<int, list>...原创 2020-04-05 10:23:07 · 112 阅读 · 0 评论 -
蓄水池抽样
1. 问题描述给定一个长度很长的数据流,在处理完成之前不知道其具体长度,如何在遍历一遍数据流的情况下,随机地抽出m个不重复的数据。key words:长度很长,遍历完之前不可知;O(N)复杂度;等概率地抽出m个数,每个数被抽中的概率为m/N。2. 蓄水池抽样算法步骤如果接收的数据量小于m,直接放入蓄水池reservoir如果接收的数量大于m,假设是第i个数据,i>=m,...原创 2020-04-04 16:48:56 · 183 阅读 · 0 评论 -
LeetCode42:接雨水,C++/Go
单调栈。从栈底到栈顶依次减小,如果入栈的元素大于等于栈顶元素,则将栈顶弹出并进行结算。每次结算时,雨水的高度为让他弹出的元素与弹出他之后的栈顶元素中的较小值与他的差,长度就是让他弹出的元素的位置与弹出他之后的栈顶元素位置之差减1.如:[1, 0, 2],栈顶为0,此时2要入栈,但是2比0大,则将0弹出,并结算,高度为min(1,2)-0,长度为2的下标 - 1的下标 - 1.C++c...原创 2020-04-04 09:25:19 · 129 阅读 · 0 评论 -
LeetCode289. 生命游戏
1.题目根据 百度百科 ,生命游戏,简称为生命,是英国数学家约翰·何顿·康威在 1970 年发明的细胞自动机。给定一个包含 m × n 个格子的面板,每一个格子都可以看成是一个细胞。每个细胞都具有一个初始状态:1 即为活细胞(live),或 0 即为死细胞(dead)。每个细胞与其八个相邻位置(水平,垂直,对角线)的细胞都遵循以下四条生存定律:如果活细胞周围八个位置的活细胞数少于两...原创 2020-04-02 09:58:43 · 93 阅读 · 0 评论 -
位运算实现加减乘除
转载自:————————————————版权声明:本文为CSDN博主「刘小小小小刘」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。原文链接:https://blog.csdn.net/qq_39478237/article/details/830395620.background数据在计算机内存中是以二进制存储的。 几种常用的位运算:与运算&am...转载 2020-03-19 18:31:50 · 218 阅读 · 0 评论 -
完美洗牌
参考:版权声明:本文为CSDN博主「lyz_cs」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。原文链接:https://blog.csdn.net/qq_26399665/article/details/798314901. Fisher-Yates Shuffle算法 最早提出这个洗牌方法的是 Ronald A. Fisher 和 Frank...原创 2020-02-28 10:53:53 · 677 阅读 · 0 评论 -
leetcode146——LRU 缓存机制
1.数据结构为了满足O(1)的复杂度,需要哈希表。另外还需要双向链表存放(key,value).哈希表中存放(key, key在链表中的位置)。2.算法2.1 get操作if key不存在: 直接返回-1else 在原链表中删除(key,value) 将(key,value)重新放回链表的头部 更新哈希表 返回value2.2 put操作if key存在: 在原链...原创 2020-02-25 17:18:24 · 181 阅读 · 0 评论 -
5274.停在原地的方案数
来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/number-of-ways-to-stay-in-the-same-place-after-some-steps题目(LeetCode停在原地的方案数)有一个长度为 arrLen 的数组,开始有一个指针在索引 0 处。每一步操作中,你可以将指针向左或向右移动 1 步,或者停在原地(指针不...原创 2019-11-24 14:59:06 · 169 阅读 · 0 评论