和最接近0的子串行

2021-06-22 22:43:30 字數 713 閱讀 5083

給定整數m,n和陣列x[n],找出某個i,使得x[i]+x[i+1]+x[i+2]+x[i+3]+x[i+4]…x[i+m]最接近於零。

(0<=i

一.暴力解法

遍歷各個i值,計算子串行的和,然後求出最接近0的

int find(int a,int n,int m) //尋找m+1個數字,使得他們的和最小

dp[0]=tmp;

for(i=1;i時間複雜度為o(n),空間複雜度為o(n)

還可以對上面的**稍作改進,上面的dp陣列,只要用乙個變數即可。

int find3(int a,int n,int m)

{int tmp=0;

int ans=int_max;

int i=0;

for(i=0;i<=m;i++)

tmp+=a[i];

if(abs((int)tmp)時間複雜度為o(n),空間複雜度為o(1)

完整**為:

# include # include # include # include using namespace std;

int find(int a,int n,int m) //尋找m+1個數字,使得他們的和最小

{ int i=0;

int thissum=0;

int j=0;

int ans=int_max;

for(i=0;i

1755 最接近目標值的子串行和

給你乙個整數陣列 nums 和乙個目標值 goal 你需要從 nums 中選出乙個子串行,使子串行元素總和最接近 goal 也就是說,如果子串行元素和為 sum 你需要 最小化絕對差 abs sum goal 返回 abs sum goal 可能的 最小值 注意,陣列的子串行是通過移除原始陣列中的某...

最接近的數

有乙個正整數,請找出其二進位制表示中1的個數相同 且大小最接近的那兩個數。乙個略大,乙個略小 給定正整數int x,請返回乙個vector,代表所求的兩個數 小的在前 保證答案存在。測試樣例 2 返回 1,4 思路 以給出的數為基礎,先將給出的數的二進位制中有幾個1判斷出來,然後再分別判別當前數左邊...

最接近的分數

description 給出乙個正實數,找出分子與分母均不超過n的最簡分數,使其最接近給出的實數。最接近 是指在數軸上該分數距離給出的小數最近,如果這個分數不惟一,輸出分子最小的乙個。input 輸入共二行 第一行只有乙個正整數 n n n第二行只有乙個正實數 x x xoutput 輸出共二行 第...