java面試的演算法題
A. java演算法題:判斷並輸出101-200中所有素數,代碼中單等號與雙等號的區別
這是很基礎的問題
單= 是賦值運算, 把後面的值賦值給前面的參數
雙= 是關系運算, 比較前後兩個參數是否相同
注意如果???處, 用單等, 就是賦值運算, 將ture 賦值 給 flag, 所以if中會一直是true, 也會一直執行if中的代碼
雙== 就是比較了啊, 結果是真 才會執行if中代碼
B. 希音java面試有演算法嗎
有。常見的如下:
一是字元串,如果IDE沒有代碼自動補全功能,所以你應該記住下面的這些方法。
二是鏈表,在Java中,鏈表的實現非常簡單,每個節點Node都有一個值val和指向下個節點的鏈接next。鏈表兩個著名的應用是棧Stack和隊列Queue。
三是樹,這里的樹通常是指二叉樹,每個節點都包含一個左孩子節點和右孩子節點。
四是排序,五是遞歸vs.迭代。
六是動態規劃,動態規劃是解決下面這些性質類問題的技術:一個問題可以通過更小子問題的解決方法來解決(即問題的最優解包含了其子問題的最優解,也就是最優子結構性質)。
有些子問題的解可能需要計算多次(也就是子問題重疊性質)。子問題的解存儲在一張表格里,這樣每個子問題只用計算一次。需要額外的空間以節省時間。爬台階問題完全符合上面的四條性質,因此可以用動態規劃法來解決。
C. 用遞歸演算法求1~100的和,用java寫。
遞歸是一種計算機科學的重要概念,它在程序設計中起到了關鍵作用。通過遞歸方法編寫程序,可以使代碼更加簡潔、清晰。
在遞歸過程中,每次調用函數時,問題的規模都會有所縮小,通常情況下是減半或減小一定的量。
相鄰兩次遞歸調用之間存在緊密聯系,前一次調用的結果將作為後一次調用的輸入。這種依賴關系使得遞歸成為解決某些問題的強大工具。
當問題的規模足夠小時,可以直接給出解答而不再進行遞歸調用。因此,每次遞歸調用都必須有條件限制,通常以規模未達到直接解答的大小為條件。若無條件遞歸調用,則可能會陷入死循環,無法正常結束。
以求1至100的和為例,可以使用遞歸演算法實現。下面是一個Java示例:
public class Test {
public static void main(String[] args) {
System.out.println(dg(100));
}
static int dg(int i) {
int sum;
if (i == 1) {
return 1;
} else {
sum = i + dg(i - 1);
return sum;
}
}
}
在這個例子中,`dg`函數用於計算從1到給定整數`i`的所有整數之和。當`i`等於1時,直接返回1,否則將當前值`i`與`i-1`的和相加,並遞歸調用`dg(i-1)`。
遞歸演算法的優勢在於簡化了代碼邏輯,使得問題的解決過程更加直觀。然而,需要注意的是,遞歸調用的深度不宜過大,否則可能會導致棧溢出。因此,在實際應用中,應當權衡遞歸與迭代演算法的優劣,選擇最適合解決問題的方法。