題目一
輸出有序陣列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...