一組數中最小值與和的乘積最大的段

2021-09-26 18:36:26 字數 1188 閱讀 2796

一組數,找到乙個區間,使這個區間的最小值 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...