1、题目

如上题所示,我们可以观察到右上角和左下角是有规律的;
例如左下角:
若当前vector的值比target大,那么就应该往上移动,这一行都不可能查找到target;
若当前vector的值比target小,则应该往右边移动,这一列都不可能查找到target;
2、解决方案
1 | class Solution { |
以左下角为起点进行遍历,思路如上所述;
3、讲讲vector
3.1 Overview and feature
- vector 是可以改变大小的序列容器,一样的连续的储存方式也就是说可以利用指针偏移进行访问,效率和数组相同;
- vector 容器可能会分配一些额外的存储空间以适应可能的增长,因此,该容器的实际容量可能会大于包含其元素(即其大小)所严格要求的存储容量,以避免每一次添加新元素都进行内存分配。
- 与数组相比,向量消耗更多的内存以换取管理存储和以有效方式动态增长的能力。
- 其他动态序列容器(双端队列,列表和forward_lists)相比,向量可以像数组一样访问其元素方面非常有效,并且从其末尾添加或删除元素都相对高效。对于涉及在末尾以外的位置插入或删除元素的操作,它们的性能比其他方法差,并且与list和forward_lists相比,迭代器和引用的一致性更差。
3.2、 Member functions
-
Construct vector (public member function )
-
Vector destructor (public member function )
-
Assign content (public member function )
Iterators:
-
Return iterator to beginning (public member function )
-
Return iterator to end (public member function )
-
Return reverse iterator to reverse beginning (public member function )
-
Return reverse iterator to reverse end (public member function )
-
Return const_iterator to beginning (public member function )
-
Return const_iterator to end (public member function )
-
Return const_reverse_iterator to reverse beginning (public member function )
-
Return const_reverse_iterator to reverse end (public member function )
Capacity:
-
Return size (public member function )
-
Return maximum size (public member function )
-
Change size (public member function )
-
Return size of allocated storage capacity (public member function )
-
Test whether vector is empty (public member function )
-
Request a change in capacity (public member function )
-
Shrink to fit (public member function )
Element access:
-
Access element (public member function )
-
Access element (public member function )
-
Access first element (public member function )
-
Access last element (public member function )
-
Access data (public member function )
Modifiers:
-
Assign vector content (public member function )
-
Add element at the end (public member function )
-
Delete last element (public member function )
-
Insert elements (public member function )
-
Erase elements (public member function )
-
Swap content (public member function )
-
Clear content (public member function )
-
Construct and insert element (public member function )
-
Construct and insert element at the end (public member function )
Allocator:
-
Get allocator (public member function )
3.3、 Non-member function overloads
-
Relational operators for vector (function template )
-
Exchange contents of vectors (function template )
3.4、 Template specializations
-
Vector of bool (class template specialization )