Leecode 上的Two Sum 的程式,有些地方看不懂
我猜這個 public int[] TwoSum(int[] numbers, int target) 陳述句是定義陣列和目標值,
但是不明白public int 的用法,還有這個 return new int[]{i,j}; 和 return new int[2]; 是什么意思?
public int[] TwoSum(int[] numbers, int target)
{
for (int i = 0; i < numbers.Length; i++)
{
for (int j = 0; j < numbers.Length; j++)
{
if (i == j)
continue;
if (numbers[i] + numbers[j] == target)
return new int[] { i, j };
}
}
return new int[2];
}
uj5u.com熱心網友回復:
另貼出我自己寫的:#include <stdio.h>
int main()
{
int num[10]={2,9,17,21,35,99,333,128,101,121,};
int i,j;
for(i=0;i<=9;i++)
{
for(j=0;j<=9;j++)
{
if(num[i]+num[j]==120)
{
printf("%d %d ",i,j);
i=100;
}
}
}
}
uj5u.com熱心網友回復:
public int[]
這是C++的語法吧,C語言沒有public關鍵字;
int []這樣作為回傳值型別不常見,常見的是int *回傳指標。從函式實作的回傳值來看就是這樣的,回傳的是指標(地址值)
#include <stdio.h>
int main()
{
int num[10]={2,9,17,21,35,99,333,128,101,121,};
int i,j;
for(i=0;i<=9;i++)
{
for(j=0;j<=9;j++)
{
if(i != j && num[i]+num[j]==120)
{
printf("%d %d ",i,j);
//i=100; //這里賦值會導致陣列越界,因為第二層回圈可能還沒結束,if (num[i]這里就會出現陣列越界了;
break;
}
}
if (j <= 9) //繼續跳出回圈
break;
}
}
供參考~
代碼有點問題修復一下,如上;
uj5u.com熱心網友回復:
實事求是地說,在這個版塊內,這個問題還得趙老濕來。你@趙老濕。轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/283780.html
標籤:C語言