題目一:這道題題目為:輸入乙個遞增排序的陣列和乙個數字s,在陣列中查詢兩個數,使得他們的和正好是s。如果有多對數字的和等於s,輸出任意一對即可。
解題思路分為三個步驟:
(1)對於已經排好序的陣列,先在陣列裡隨機選擇兩個數字,如果它們的和正好等於s,則輸出這兩個數字。
(2)如果隨機選擇的兩個數字和小於s,可以選擇較小數字後面比它大的數字。
(3)如果隨機選擇的兩個數字和大於s,可以選擇較大數字前面比它小的數字。
**如下:
#include#include#includebool findsum(int *number, int length, int sum, int *num1, int *num2)
else if (cursum > sum)
ahead--;
else
second++;
} return found;
}
題目二:這道題題目為:輸入乙個正數s,列印出所有和為s的連續正數序列(至少含有兩個數)。
解題思路分為三個步驟:
(1)分別用small和big標記序列的最小值和最大值,其中將small初始化為1,big初始化為2。
(2)如果small到big的和大於s,可以去掉序列中較小的值,增大small的值,其中small值可以增加到(1+s)/2。
(3)如果small到big的和小於s,可以在序列中加入更多的數字,增大big的值。
**如下:
#include#includevoid findsequence(int sum)
printf("\n");
} //序列和小於或大於s
while (cursum>sum&&small < middle)
printf("\n");
}} big++;
cursum += big;
}}
劍指offer 57 和為s的兩個數字
輸入乙個遞增排序的陣列和乙個數字s,在陣列中查詢兩個數,使得它們的和正好是s。如果有多對數字的和等於s,則輸出任意一對即可。對列表中元素根據target計算餘數,判斷餘數是否在例表中,有則返回。但時間複雜度高為o n 2 當列表很大時,超出時間限制。class solution def twosum...
劍指 Offer 57 和為s的兩個數字
輸入乙個遞增排序的陣列和乙個數字s,在陣列中查詢兩個數,使得它們的和正好是s。如果有多對數字的和等於s,則輸出任意一對即可。示例 1 輸入 nums 2,7,11,15 target 9 輸出 2,7 或者 7,2 示例 2 輸入 nums 10,26,30,31,47,60 target 40 輸...
劍指 Offer 57 和為s的兩個數字
劍指 offer 57.和為s的兩個數字 輸入乙個遞增排序的陣列和乙個數字s,在陣列中查詢兩個數,使得它們的和正好是s。如果有多對數字的和等於s,則輸出任意一對即可。示例 1 輸入 nums 2,7,11,15 target 9 輸出 2,7 或者 7,2 示例 2 輸入 nums 10,26,30...