一、技术总结 1. 这也是一个贪心算法问题,主要在于想清楚,怎么解决输出和最大,两个数组得确保符号相同位相乘,并且绝对值尽可能大。 2. 可以用两个vector容器存储,然后排序从小到大或是从大到小都可以,一次从两端开始相乘,保证符号相同。 二、参考代码 ...
分类:
其他好文 时间:
2019-11-13 16:31:13
阅读次数:
68
"题目" 用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。 题解 描述 栈的特性是先进后出,队列的特点是先进先出,当数字依次入栈1后,依次出栈1并且压入栈2后,然后再出栈的顺序与进入栈1的顺序是一致的。 因此,进入队列通过压入栈1实现,弹出队列通过弹出栈2的栈顶元 ...
分类:
编程语言 时间:
2019-11-12 20:20:43
阅读次数:
107
用两个栈来实现一个队列,完成队列的Push和Pop操作。队列中的元素为int类型。 1 using System.Collections.Generic; 2 namespace JianZhiOffer 3 { 4 class StackToQueue 5 { 6 Stack<int> stk1 ...
分类:
其他好文 时间:
2019-11-12 09:17:07
阅读次数:
80
不使用递归且不引入标准库,单纯用两个for循环即可得出一个list的所有子集 L = [1, 2, 3, 4] List = [[]] for i in range(len(L)): # 定长 for j in range(len(List)): # 变长 sub_List = List[j] + ...
分类:
编程语言 时间:
2019-11-10 19:16:11
阅读次数:
110
Tarjan的SparseTable,即ST表,用于求RMQ区间最值问题。 我对ST表的时间复杂度是有所疑惑的,我认为查询并不能够达到O(1)的速度。也许只是常数?但是查询区间长度为n的时候就要对长度进行logn次调整,蓝书上写的是这样,我不太确定。 本质上,由于寻求区间最值的特性,在给定区间内多次 ...
分类:
编程语言 时间:
2019-11-10 15:18:22
阅读次数:
72
一 双指针遍历 所谓双指针,是利用两个指针对一个有序数组进行遍历,查找出符合要求的数据集合。相信大家都接触到了这种思维模式的解题方法,只是没有注意到罢了。下面举几个例子吧。 例1:给定一个数组a[n],求数组中是否存在两个数的和等于给定值sum并输出? 这个问题很常见,我当年在面试微软实习生的时候就 ...
分类:
其他好文 时间:
2019-11-09 19:45:41
阅读次数:
145
题目: 用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。 分析: 栈的特点是先进后出,队列的特点则是先进先出。 题目要求我们用两个栈来实现一个队列,栈和队列都有入栈(入队)的操作,所以我们可以使用一个栈来模拟入队的操作,另一个栈用来负责出队。 利用stack1模拟 ...
分类:
编程语言 时间:
2019-11-09 19:44:32
阅读次数:
96
用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。 https://www.nowcoder.com/questionTerminal/54275ddae22f475981afa2244dd448c6 做法: 1)总是在stack1中push元素‘ 2)当stack ...
分类:
其他好文 时间:
2019-11-09 00:32:08
阅读次数:
81
/* 题目: 用两个栈实现一个队列。队列声明如下。 */ /* 思路: 将值压入stack1,再从stack1弹出到stack2,则为先进先出。 appendTail时直接压入stack1即可,当stack2没有可用于deleteHead的元素时,将stack1的元素全部压入stack2。 */ t ...
分类:
其他好文 时间:
2019-11-08 20:50:29
阅读次数:
100
/** * 使用两个指针i和j,初始化均为0。然后j往后遍历,若遇到了奇数,则将 A[j] 和 A[i] 交换位置,同时i自增1,这样操作下来,同样可以将所有的偶数都放在奇数前面 * */ public class SortArrayByParity { public static void mai ...
分类:
编程语言 时间:
2019-11-06 15:22:06
阅读次数:
98