リートコード質問バンクの最初の質問を開きます。2つの数字の合計です。難易度は単純です。この質問を試してみるという精神で見てください。やっぱり最初の質問だと思って、もっと親しみやすいと思い、このブログを書いて記録しました。
1. 2つの数値の合計-LeetCode(leetcode-cn.com)https://leetcode-cn.com/problems/two-sum/
そして、c言語に基づく最初の関数テンプレート
このトピックのいくつかの重要なポイントを見てみましょう
nums
1.整数配列と整数ターゲット値 が与えられ ますtarget
2.合計が配列のターゲット値 target
で ある 2つの 整数を見つけます
3.配列の添え字を返します
4.配列内の同じ要素を回答で繰り返すことはできません
さて、私たちは質問の基本的な理解と質問の意味の一般的な理解を持っています。さらに、質問をする前にテストケースを見る必要があります。
実際、例に含まれている条件もありますが、どのような条件ですか?追加された2つの数字が隣接していることがわかりました。
実は考えていなかったのですが、久しぶりに考えて、他の人のコメントを見に行きました。
関数のパラメーターを分析します
int * numsは、numsの配列です。
int numsSize、要素の数
int target、target value size
int*returnSizeは数値を返します
私たちの一般的な考え方は次のとおりです。
配列を動的に開いて、2つの数値(配列内 の 2つの 整数とターゲット値 )を格納しますtarget
ループトラバーサルを使用して、これら2つの隣接する整数を検索します
それが等しいかどうかを判断する
アイデアは一般的にこのようなものです、それをどのように実装するのですか?
int* twoSum(int* nums, int numsSize, int target, int* returnSize){
int*array = (int*)malloc(2*sizeof(int));
for(int i = 0;i<numsSize;i++){
for(int j =i+1;j<numsSize;j++){
if(nums[i]+nums[j]==target){
array[0] = i;
array[1] = j;
*returnSize = 2;
return array;
}
}
}
*returnSize=0;
return*array = NULL;
}
ソースコードはここにあります、そしてもちろんそれは最後に渡されます
わかった。勉強を失ったことがありますか?