随笔分类 - 剑指offer
摘要:一、两个栈实现一个队列 设两个栈分别为stack1和stack2,stack1主要负责“进入”,模拟的是“队尾”;stack2主要负责“弹出”,模拟的是“队头”。具体思路如下: 1、对于“数据入队”操作,只需要将数据压入stack1即可 2、对于“数据出队”操作,若stack2非空,直接弹出栈顶元素
阅读全文
摘要:特殊情况下,排序其实可以做到O(n)的复杂度哦,请看如下例题和说明,这种排序的应用十分广泛,而且速度快,缺点就是需要用空间来换时间 1 /* 2 问题描述:如何对公司所有员工的年龄进行排序呢?公司有几万名员工,要求时间复杂度为O(n) 3 解题思路:总体思路是“用时间换空间”这样的问题一般有这样的特点 4 1、数字有一定的范围,如本次的年龄,范围假设为0-99 5 ...
阅读全文
摘要:问题: 两个有序数组,合并成一个有序数组,假设第一个数组空间足够容纳两个数组。 分析:考虑到num1数组很大,可以直接在num1数组上进行合并,但是要讲究效率。如果单纯从前往后合并,那么效率会非常低,因为a数组后面的数字需要进行多次的移动,时间复杂度为O(n^2)换一种思路,我们采用从后往前合并,首
阅读全文
摘要:面试题63:股票的最大利润 暴力搜索复杂度O(N^2),换个思路,遍历到某点,只需要记录改点之前最小的点即可,二者之差即为当前最大利润,时间复杂度O(N) 1 int MaxDiff(vector<int> numbers) 2 { 3 int len = numbers.size(); 4 if
阅读全文

浙公网安备 33010602011771号