第一题二分查找
二分查找的实现是较为简单的,这里提供递归和迭代两种方式以供对比
迭代:这是一种类似于双指针的方式,通过调整双指针的指向,进行迭代
递归:递归的代码量虽然不多,但是想清楚逻辑是有难度的,主要是return左边部分还是右半部分
第二题用栈实现队列
栈和队列的关键区别就是先入先出还是先入后出,我们考虑使用两个栈实现队列。分别命名为栈A和栈B
对于push操作,我们就将其加入到栈A。
对于pop操作,我们先将栈A的元素全部加入到栈B,然后返回栈B的第一个元素并删除,再将栈B的元素返回栈A。
对于peek操作,同pop操作但不删除。
对于is_empty操作,判断栈A是否为空即可。
题解给出另一种思路,对于pop操作和peek操作,可以不将栈B返回到栈A。但是这样的操作会加入额外的判断,有利有弊吧,两者均可。给出样例代码:
第三题比较版本号
感觉很大一部分难度在理解题意上,故将所有测试样例均列出:
首先的操作肯定是使用.对原字符串进行分割,得到若干子数组,然后将两数组补成相同长度,缺省补0。然后使用字符串转数字,依次对比数字大小。
给出样例代码: