思路
這題和第一題 Two Sum 題目連結 有異曲同工之妙
My C# Solution
花了幾分鐘先寫出來 可能有誤及解法沒有很好 先PO來鞭屍一下XD
public static int[] TwoSum(int[] numbers, int target)
{
int[] targetNum = new int[2];
for(int i = 0; i < numbers.Length-1; i++)
{
for(int j = i+1; j < numbers.Length; j++)
{
if (numbers[i] + numbers[j] != target)
{
continue;
}
else
{
targetNum[0] = i+1;
targetNum[1] =j+1;
break;
}
}
}
if (targetNum.Length != 2)
{
return new int[0];
}
return targetNum;
}
Result
來看看修正後的
public static int[] TwoSum(int[] numbers, int target)
{
// 從左邊算的索引值;
int left = 0;
// 從右邊算 陣列最後的索引值;
int right = numbers.Length - 1;
// 最初的和最後的相加;
// 如果加起來數字大於目標數字的話 代表最後一位太多,所以換成(當前索引值)前面那個值
// 如果加起來數字小於目標數字的話 代表第一位太少一,所以換成(當前索引值)前面那個值
while (numbers[left] + numbers[right] != target)
{
if (numbers[left] + numbers[right] > target)
{
right--;
}
else
{
left++;
}
}
return new int[] { left + 1, right + 1 };
}
Result:整個效能比剛才的好很多
主要是做我的學習筆記
偶而心血來潮寫個幾篇~
若有問題~可以寫信或在下方留言~感謝