日常のコーディング。^ _ ^
1.2つの合計
- 主要な知識:ポインタ値は、新しいmalloc関数の配列によって保存することができます
- INT * returnSize:戻り配列のサイズ。ポインタの値を格納し、2を言う
* returnSize = 2 - 私の解決策:
-
/ ** *注:返される配列をmallocされなければならない、呼び出し側は()無料通話を前提としています。 * / INT * twoSum(INT * NUMS、INT numsSize、INTターゲット、INT * returnSize){ * returnSize = 2。 INT * returnArray = malloc関数(はsizeof(INT)*(* returnSize))。 以下のために(INT i = 0; I <numsSize-1; iは++){ ための(int型J = I + 1、J <numsSize; J ++){ IF(NUMS [I] + NUMS [J] ==ターゲット){ returnArray [ 0] = I。 returnArray [1] = J。 returnArrayを返します。 } } } returnArray [0] = -1。 returnArray [1] = -1。 returnArrayを返します。 }
2. 2つの数値を追加します。
- 主要な知識:あなたは、キャリーを検討リスト・トラバーサルと挿入ノード、malloc関数によって新しいノードを考慮し、数字で計算することができません
- 数字は非常に長いため、この問題での計算に整数を使用しないでください。
- キャリービットを検討する必要があります。
- このリンクリストの頭には最初のノードです。
- 私の解決策:
-
/ ** *単一リンクリストのための定義。 *構造体ListNode { * INTヴァル。 次の*構造体ListNode *; *}。 * / 構造体ListNode * addTwoNumbers(構造体ListNode * L1、構造体ListNode * L2){ 構造体ListNodeの* P1を、 構造体ListNodeの* p2と、 構造体ListNode * L3 = NULL; 構造体ListNode * P3 = NULL; P1 = L1; P2 = L2; int型carry_bit = 0; 一方、(!P1 = NULL || P2 = NULL || carry_bit == 1){ int型NUM1。 int型からnum2; int型のNUM3。 IF(P1 == NULL && P2 == NULL && carry_bit == 1){ NUM3 = 1。 carry_bit = 0; } 他{ IF(P1 == NULL){ NUM1 = 0。 } 他{ NUM1 = P1->ヴァル。 P1 = P1->次。 } IF(P2 == NULL){ NUM2 = 0。 } 他{ NUM2 = P2->ヴァル。 P2 = P2->次。 } NUM3 = NUM1 + NUM2 + carry_bit。 IF(NUM3> = 10){ carry_bit = 1。 NUM3 = NUM3 - 10。 } 他{ carry_bit = 0。 } } 構造体ListNode * TMP。 TMP =のmalloc(はsizeof(構造体ListNode))。 IF(TMP == NULL){ 関数fprintf(stderrに、 "メモリ不足\ n"); 出口(1)。 } tmp->ヴァル= NUM3。 tmp->次= NULL; IF(P3 == NULL){ P3 = TMP。 L3 = P3; } 他{ P3->次= TMP。 P3 = P3->次。 } } L3を返します。 }
3。