用java寫了幾道編程題目,分享給大家
語法和C語言幾乎一樣,不懂 java 會 c 也可以看明白的。
最大連續數列和
題目說明
對於一個有正有負的整數數組,請找出總和最大的連續數列。給定一個int數組A和數組大小n,請返回最大的連續數列的和。保證n的大小小於等於3000。
測試樣例:
[1,2,3,-6,1]
返回:6
解析
題目要求找到總和最大的連續數列。你可以隨意寫幾條包含正負數的數列,來找到方法。這本來是一道貪心問題,但我用暴力也可以在規定時間內得出解。(好吧,我承認我太菜了,只會暴力求解)具體方法大家分析代碼吧,簡單講,就是兩層循環求出所有連續數列的和,每次求得的和與之前求到的最大和比較。
代碼如下:
public class MaxSum {
public int getMaxSum(int[] A, int n) {
int sum = -99999,s;
for (int i = 0; i < n; i++) {
s = 0;
for (int j = i; j < n; j++) {
s += A[j];
if (s > sum)
sum = s;
}
}
return sum;
}
}
第K個數
題目說明
有一些數的素因子只有3、5、7,請設計一個算法,找出其中的第k個數。給定一個數int k,請返回第k個數。保證k小於等於100。
測試樣例:
3
返回:7
解析
這道題目要求求得第k個因子只有3、5、7的數,我們可以從3開始,不斷累加,並測試它是否滿足條件,直到求得第k個數。
代碼如下:
public class KthNumber {
public int findKth(int k) {
int n;
int m = 3;
while (k != 0) {
n = m;
while(n%3 == 0)
n /= 3;
while(n%5 == 0)
n /= 5;
while(n%7 == 0)
n /= 7;
if (n == 1)
k--;
m = m + 2; // 只可能為奇數,累加2可以提高效率
}
return m - 2;
}
}
附:
我也不知道該附什么了。。。好久沒看文學的東西了。。。
附句話吧:
我要把這個世界敲得明明白白。 0/1
以上
