每日一题
文章平均质量分 59
ArchyLi
一个学习路上人。当然还差很多。
展开
-
【每日一题】替换字符串中的空格为$$$。要求时间复杂度为O(N)
题目:替换字符串中的空格为$$$。要求时间复杂度为O(N)例如:将"talk is cheap show me the code"替换。为"talk$$$is$$$cheap$$$show$$$me$$$the$$$code"。这道题类似和剑指offer一书中面试题4:替换空格思路是一样的。题目要求时间复杂度为O(N),而我们一般从前向后的思路时间复杂度为O(n^2),所以原创 2017-07-21 17:12:48 · 563 阅读 · 0 评论 -
两个队列实现一个栈
栈:先进后出队列:后进先出方法一:如何用两个队列实现一个栈呢?我们可以把一个队列里面的内容放入第二个队列里面,此时要剩余一个,这剩下的一个可以直接出栈,再把队列2里面的元素放回队列1, 重复即可达到栈的要求#include#include using namespace std;template class Cstack{public: Cstack(void)原创 2017-07-22 13:09:06 · 573 阅读 · 0 评论 -
【每日一题】实现一个栈Stack,要求实现Push(出栈)、Pop(入栈)、Min(返回最小值的操作)的时间复杂度为O(1)
这道题有两种实现方式方法一:用两个栈来实现两个栈实现的主要思路是,一个栈存放数据,一个栈存放最小值。压栈操作:(1)我们先向S1压栈一个数据(2)再向S1压入第二个数据,如果此时栈S2为空,并且把需要压栈的元素data和S2的栈顶元素进行比较,如果此时需要压栈的元素小于等于S2栈顶元素,把元素也压入栈2,否则不用管出栈操作:判断S1栈顶元素与S2栈顶元素是否相等,相原创 2017-07-22 14:45:03 · 3348 阅读 · 0 评论 -
【每日一题】查找一个字符串中第一个只出现两次的字符。要求时间复杂度为O(N),空间复杂度为O(1)
题目:将"talk is cheap show me the code"替换。查找一个字符串中第一个只出现两次的字符。如:“abcdefabcdefabc”中第一个只出现两次为‘d’,要求时间复杂度为O(N),空间复杂度为O(1)本题我们很容易想到两次遍历,及外面一个大循环里面一个小循环直接遍历,可是题目要求时间复杂度为O(N),空间复杂度为O(1)。因此我们采用如下的方法解决。创原创 2017-07-22 16:04:34 · 1412 阅读 · 1 评论 -
【每日一题】元素出栈、入栈顺序的合法性。如:入栈的序列(1,2,3,4,5),出栈序列为(4,5,3,2,1),则合法。
题目:元素出栈、入栈顺序的合法性。如:入栈的序列(1,2,3,4,5),出栈序列为(4,5,3,2,1),则合法。入栈的序列(1,2,3,4,5),出栈序列为(4,5,2,3,1),则不合法。这道题我们可以创建两个栈(感觉有点类似两个栈实现一个队列),需要几个数字放在前面即把S1的栈顶元素取几个放在S2里面即可。出栈时候先判断S2是否为空,不为空则从S2栈顶元素逐个取出,再从S1中原创 2017-07-22 18:29:20 · 7803 阅读 · 0 评论 -
两个集合用单链表存储,分别求出集合的差集和并集(单链表求差集并集)
一、集合求交集题目:已知集合A和B的元素分别用不含头结点的单链表存储,函数difference()用于求解集合A与B的差集,并将结果保存在集合A的单链表中。 例如,若集合A = { 5,10,20,15,25,30 },集合B = { 5,15,35,25 },完成计算后A = { 10,20,30 }。 链表结点的结构类型定义如下: struct node { int elem;原创 2017-08-01 12:39:00 · 7285 阅读 · 0 评论