算法實現--二維數組-查找數字

/*
	題目描述:
	在一個二維數組中(每個一維數組的長度相同),每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。
	請完成一個函數,輸入這樣的一個二維數組和一個整數,判斷數組中是否含有該整數。

	思路:
	利用二維數組由上到下,由左到右遞增的規律,
	那麼選取右上角或者左下角的元素a[row][col]與target進行比較,
	當target小於元素a[row][col]時,那麼target必定在元素a所在行的左邊,
	即col--;
	當target大於元素a[row][col]時,那麼target必定在元素a所在列的下邊,
	即row++;
*/
bool Find(int target, const vector<vector<int> >& array)
{
	// array是二維數組,這裏沒做判空操作
	int row = array.size();
	int col = array[0].size();
	int i = 0;
	int j = col - 1; // 從右上角開始找
	while (i < row && j >= 0)
	{
		if (target < array[i][j])
			j--;
		else if (target > array[i][j])
			i++;
		else
			return true;
	}

	return false;
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章