面試常見演算法題1 陣列相關,降低時間複雜度

2021-10-08 13:23:13 字數 685 閱讀 8152

1.在乙個二維陣列中(每個一維陣列的長度相同),每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成乙個函式,輸入這樣的乙個二維陣列和乙個整數,判斷陣列中是否含有該整數

這是一道陣列操作問題。首先我們要知道查詢的過程本質就是排除的過程。這道題如果用迴圈遍歷查詢的話,簡單但是效率過低。所以不妨思考一下什麼樣的查詢效率會變高

陣列示例:

2345345

6456

7

此二維陣列有序排列,每行與每列都是遞增的,所以我們可以通過比較右上角與目標值的大小,進而排除一行或者一列元素,大於目標值排除列,小於目標值排除行。也可以用左下角的元素,排除結果相反即可。

public

class

solution

int i=0;

int j = array[0]

.length-1;

//array[i][j]就是右上角的數字

while

(i=0)

else

if(target>array[i]

[j])

else

}return

false;}

}

常見演算法題1

1.反轉字串中的單詞和反轉字元 例如 str my name is teng 輸出1 str1 teng is name my 輸出2 str2 ym eman si gnet 解法 public string reverse1 string str return out s 0 public st...

JS面試常見演算法題

學習資料結構與演算法對於工程師去理解和分析問題都是有幫助的。如果將來當我們面對較為複雜的問題,這些基礎知識的積累可以幫助我們更好的優化解決思路。下面羅列在前端面試中經常撞見的幾個問題吧。1.統計乙個字串出現最多的字母和出現的次數 第一種方法 var str abcdeddd var n for va...

JS面試常見演算法題

1.統計乙個字串出現最多的字母和出現的次數 第一種方法 var str abcdeddd var n for var i 0 i str.length i else console.log n var max 0 var maxchar null for var key in n var mores...