陣列 sum問題

2021-07-17 01:52:37 字數 735 閱讀 5639

題目一

輸出有序陣列a中,和為s的兩個數。如有多個,輸出乘積最小的兩個。

思路:將兩個指標分別指向首尾,如果和與指定值相等,則返回;如和大於指定值,則右指標向左移動;如和小於指定值,則左指標向右移動。

public arraylistfindnumberswithsum(int  array,int sum) else

}return list;

}

總結:這時時間複雜度為o(n)

擴充套件:1)如果陣列是無序的,需要先排序,時間複雜度為o(n);

2)如果是3個數的和為sum,則轉化為2-sum問題,即兩個數的和,為sum-ni。時間複雜度為o(n*n);

3)和為sum的n個數(這個涉及到樹的深度遍歷,放在樹那一部分總結)

題目二:

和為sum的連續正整數序列

思路:可以借鑑前面的思想,用small和big分別表示最小值和最大值。如果從small到big的和大於sum,則去掉較小的值,即small++;如果和小於sum,則增大big的值。因為至少是兩個值,所以small最大為(sum+1)/2;

public arraylist> findcontinuoussequence(int sum) 

return list;

}private void add(arraylistl,int small,int big)

}

六 問題 2 sum問題

兩數之和問題 給定乙個列表和乙個整數,從列表中找到兩個數,使得兩數之和等於給定的數,返回兩個數的下標。題目保證有且只有一組解 def two sum 1 nums,target 時間複雜度 o n n param nums param target return n len nums for i i...

餘數之和sum

餘數之和sum time limit 5000ms memory limit 165888kb 64bit io format lld llu submit status description 給出正整數n和k,計算j n,k k mod 1 k mod 2 k mod 3 k mod n的值,其...

python 列表,陣列和矩陣sum的用法區別

1.列表使用sum,如下 對1維列表和二維列表,numpy.sum a 都能將列表a中的所有元素求和並返回,a.sum 用法是非法的。但是對於1維列表,sum a 和numpy.sum a 效果相同,對於二維列表,sum a 會報錯,用法非法。2.在陣列和矩陣中使用sum 對陣列b和矩陣c,b.su...