2)思路
3)小結
4)**
要求:在乙個二維陣列中,每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成乙個函式,輸入這樣的乙個二維陣列和乙個整數,判斷陣列中是否含有該整數。
樣例
注意題目說的陣列,無論是列還是行,都是遞增的,所有這個矩陣,是個有序矩陣,則可以根據這個矩陣的特點進行查詢。矩陣的角,是有特點的,左上角是最小點,右下角是最大點,但是這兩個角不能用,沒有辦法判斷刪除某行某列,只能是另外兩個,只需要從矩陣的乙個角左下角或者右上角,必須是元素最大和最小的組合,(右上角),如果目標值大於當前元素,則刪除當前元素所在的這一列,若小於當前元素,則刪除當前元素所在的這一行。這樣操作,都在目標元素的比較範圍中,不會丟失比較元素。結束判斷,通過移動位置,如果移動越界,則不存在。
學習程式設計書上的**規範,測試用例的簡潔明瞭
參考劍指offer源**-github
//標頭檔案
#pragma once
#include
#include
#include
bool
find
(int
* matrix,
int rows,
int columns,
int number)
else
if(matrix[row * columns + column]
> number)
-- column;
else
++ row;}}
return found;
}// ********************主函式及測試**********************
void
test
(char
* testname,
int* matrix,
int rows,
int columns,
int number,
bool expected)
// 1 2 8 9
// 2 4 9 12
// 4 7 10 13
// 6 8 11 15
// 要查詢的數在陣列中
void
test1()
,,,}
;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()
,,,}
;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()
,,,}
;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()
,,,}
;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()
,,,}
;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()
,,,}
;test
("test6",(
int*
)matrix,4,
4,16,
false);
}// 魯棒性測試,輸入空指標
void
test7()
intmain
(int argc,
char
* ar**)
劍指Offer精選程式設計面試題14 剪繩子
2 思路 3 補充知識 4 與測試 要求 給你一根長度為n的繩子,請把繩子剪成m段 m,n都是整數,n 1 並且m 1 每段繩子的長度記為k 0 k 1 k m 請問k 0 x k 1 x x k m 可能的最大乘積是多少?例如,當繩子的長度是8時,我們把它剪成長度分別為2 3 3的三段,此時得到的...
劍指Offer精選程式設計面試題15 二進位制中1的個數
2 思路 3 與測試 要求 輸入乙個整數,輸出該數二進位制表示中1的個數。如輸入9,則輸出2。總體來分三種 思路一弊端 此操作輸入負數的時候容易引發死迴圈,因為負數移位的時候最高位會設為1,容易陷入死迴圈。思路二弊端 此操作的迴圈次數為整數二進位制的位數,為常規解法。思路三優勢 此操作的迴圈次數為整...
劍指offer 面試題4
替換空格 本題的解決方法還有乙個限制,即在當前字串上進行替換操作,不能申請額外記憶體。所以,前提該字串陣列的總長度要比替換後的長度大,不然替換失敗。include using namespace std void replaceblank char str,int length int indexo...