一組數,找到乙個區間,使這個區間的最小值 min 和這個區間的和 sum 的乘積 min * sum 最大,返回這個最大值。輸入5
10 2 7 6 8
輸出解釋
[7 6 8]
1、思路
二分法(最小值處分割)複雜度:nlogn
只有去掉最小值才可能出現更大的結果,去掉最小值,出現左右兩部分。二分,最小值左邊,最小值右邊; 類似快排,nlogn
2、敲**
#include #include #include #include #include using namespace std;
/*輸入
5 10 2 7 6 8
輸出 126 [7 6 8]
*/// 只有去掉最小值才可能出現更大的結果,去掉最小值,出現左右兩部分
// 二分,最小值左邊,最小值右邊; 類似快排,nlogn
int ans = int_min;
void dfs(vector&nums, int left, int right)
int main()
一組數,找到乙個區間,使這個區間的最小值 min 和這個區間的和 sum 的乘積 min * sum 最大,返回這個最大值。
1、思路
雙指標,o(n)
去掉最左邊和最右邊其中乙個最小的,sum減小,均值可能會增大。類似水坑問題,o(n)
2、敲**
#include #include #include #include #include using namespace std;
/*輸入
5 1 2 3 7 8
輸出 112.5 [7 8]
輸入 5 6 3 3 7 8
輸出 145.8
輸入 5
1 3 10 7 8
輸出 208.333
*/// 雙指標,去掉最左邊和最右邊其中乙個最小的,sum減小,均值可能會增大。類似水坑問題,o(n)
int main()
else
}cout << ans;
getchar();
return 0;
}
比較一組數的最大值或最小值
public static void main string args int max num 0 認為陣列裡的是乙個數為最大值 int min num 0 認為陣列裡的是乙個數為最小值 for int i 0 i num.length i system.out.println 最大值 max sy...
同時求一組數的最大值和最小值(Python)
用分治法同時求n個數 a1,a2 a3,an中的最小值 min 1,n 和最大值 max 1,n 的基本思想是 1 要求min 1,n 和max 1,n 可以先求得 min 1,n 2 和min n 2 1,n 以及max 1,n 2 和max n 2 1,n min 1,n 2 和min n 2 ...
獲取一組資料的最大值和最小值
例如,對 陣列 arr 1,5,48,99,6,5,22,77,1,4,999,1,2 進行查詢 1.使用math方法 查詢最小值 math.min arr 查詢最大值 math.max arr 2.先排序然後獲取第一位和最後一位 排序 arr.sort a,b a b 獲取最小值 let minv...