【剑指offer】面试题3 数组 二维数组的查找
2014-09-30 17:40
603 查看
链表 树,鲁棒性
数组:
空间效率不高,因为只存一个数字也要分配整个内存
动态数组要尽量减小改变数组容量大小的次数
题目3:
从具体例子找普遍规律!
不同的方向查找
数组:
空间效率不高,因为只存一个数字也要分配整个内存
动态数组要尽量减小改变数组容量大小的次数
题目3:
从具体例子找普遍规律!
不同的方向查找
// 二维数组matrix中,每一行都从左到右递增排序, // 每一列都从上到下递增排序 bool Find(int* matrix, int rows, int columns, int number) { bool found = false; if(matrix != NULL && rows > 0 && columns > 0) { int row = rows-1; int column =0; while(row>=0 && column <columns) { if(matrix[row*column+column] == number) { found = true; break; } else if(matrix[row*column+column] > number) --row; else ++ column; } } return found; } // ====================测试代码==================== void Test(char* testName, int* matrix, int rows, int columns, int number, bool expected) { if(testName != NULL) printf("%s begins: ", testName); bool result = Find(matrix, rows, columns, number); if(result == expected) printf("Passed.\n"); else printf("Failed.\n"); } // 1 2 8 9 // 2 4 9 12 // 4 7 10 13 // 6 8 11 15 // 要查找的数在数组中 void Test1() { int matrix[][4] = {{1, 2, 8, 9}, {2, 4, 9, 12}, {4, 7, 10, 13}, {6, 8, 11, 15}}; Test("Test1", (int*)matrix, 4, 4, 7, true);//!!!因为二维数组名是指向一位数组首地址 } // 1 2 8 9 // 2 4 9 12 // 4 7 10 13 // 6 8 11 15 // 要查找的数不在数组中 void Test2() { int matrix[][4] = {{1, 2, 8, 9}, {2, 4, 9, 12}, {4, 7, 10, 13}, {6, 8, 11, 15}}; Test("Test2", (int*)matrix, 4, 4, 5, false); } // 1 2 8 9 // 2 4 9 12 // 4 7 10 13 // 6 8 11 15 // 要查找的数是数组中最小的数字 void Test3() { int matrix[][4] = {{1, 2, 8, 9}, {2, 4, 9, 12}, {4, 7, 10, 13}, {6, 8, 11, 15}}; Test("Test3", (int*)matrix, 4, 4, 1, true); } // 1 2 8 9 // 2 4 9 12 // 4 7 10 13 // 6 8 11 15 // 要查找的数是数组中最大的数字 void Test4() { int matrix[][4] = {{1, 2, 8, 9}, {2, 4, 9, 12}, {4, 7, 10, 13}, {6, 8, 11, 15}}; Test("Test4", (int*)matrix, 4, 4, 15, true); } // 1 2 8 9 // 2 4 9 12 // 4 7 10 13 // 6 8 11 15 // 要查找的数比数组中最小的数字还小 void Test5() { int matrix[][4] = {{1, 2, 8, 9}, {2, 4, 9, 12}, {4, 7, 10, 13}, {6, 8, 11, 15}}; Test("Test5", (int*)matrix, 4, 4, 0, false); } // 1 2 8 9 // 2 4 9 12 // 4 7 10 13 // 6 8 11 15 // 要查找的数比数组中最大的数字还大 void Test6() { int matrix[][4] = {{1, 2, 8, 9}, {2, 4, 9, 12}, {4, 7, 10, 13}, {6, 8, 11, 15}}; Test("Test6", (int*)matrix, 4, 4, 16, false); } // 鲁棒性测试,输入空指针 void Test7() { Test("Test7", NULL, 0, 0, 16, false); } int main()//(int argc, char* argv[]) { Test1(); Test2(); Test3(); Test4(); Test5(); Test6(); Test7(); return 0; }
相关文章推荐
- 【剑指offer】2.3.1 数组——面试题3:二维数组中的查找
- 剑指offer--面试题3:二维数组中的查找(数组)
- 剑指offer面试题3 二维数组中的查找 (java)
- 剑指Offer 面试题3:二维数组中查找
- 剑指Offer 面试题3 二维数组中查找
- 剑指offer2--二维数组中的查找(数组使用)
- 【剑指offer】面试题3:二维数组中的查找
- 题目1384:二维数组中的查找(剑指offer-面试题3)
- 剑指Offer面试题3(Java版):二维数组中的查找
- 剑指offer:二维数组中的查找(数组)
- 【剑指offer】面试题3:二维数组的查找
- 【剑指offer】2.4.1查找和排序——面试题8:旋转数组的最小数字
- 二维数组的查找 剑指offer面试题
- 【剑指offer】面试题3:二位数组中的查找 java
- 【剑指Offer面试题】九度OJ1384:二维数组中的查找
- 【剑指Offer学习】【面试题3 :二维数组中的查找】
- 二维数组中的查找(剑指offer面试题3)
- 剑指offer面试题3之二维数组中的查找