劍指offer 57 和為S的兩個數

2021-09-12 02:27:10 字數 974 閱讀 8987

題目一:這道題題目為:輸入乙個遞增排序的陣列和乙個數字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...