1.数组中数值和下标相等的元素
假设一个单调递增数组里的每个元素都是整数并且是唯一的。请找出数组中任意一个数值等于其下标的元素。
思路:利用二分查找。假设找到的数字的值大于他的下标,由于数组中数字唯一且单调递增,因此这个数字右面的数字都应该大于各自对应的下标,答案在左面。同理,加入找到数字的值小于它的下标,那么这个数字左边的数字都应该小于各自对应的下标,答案在右面。
int GetNumbersSameAsIndex(const int* numbers,int length)
{
if(numbers==nullptr||length<=0)
{
return -1;
}
int left=0;
int right=length-1;
while(left<=right)
{
int middle=left+((right-left)>>1);
if(number[middle]==middle)
{
return middle;
}
if(numbers[middle]>middle)
{
right=middle-1;//在左面
}
else
{
left=middle+1;//在右面
}
}
return -1;
}2.用两个堆栈实现队列
class Solution
{
public:
void push(int node) {
stack1.push(node);
}
int pop() {
int number;
if(stack2.empty())
{
while(!stack1.empty())
{
stack2.push(stack1.top());
stack1.pop();
}
}
number=stack2.top();
stack2.pop();
return number;
}
private:
stack<int> stack1;
stack<int> stack2;
};

京公网安备 11010502036488号