Closed twy30 closed 3 years ago
新手中的新手來求教了 😅 (C#)
我還沒參考 LeetCode 的討論區,想先就第一個版本取得回饋,無論就命名、簡潔、易讀,或註解寫作各方面。
十分感謝。寫得很爛,我會努力的 orz
public int[] RunningSum(int[] nums)
{
// 1. 加總所有數字
// 2. 先把最後一個數字記下來
// 3. 把總和填入最後一個數
// 4. 把最後一個數減去原初最後一個數(步驟 2 的結果)
// 5. 先把倒數第二個數字記下來
// 6. 把結果記載倒數第二個數
// 7. 重複 步驟 4 ~ 6
// ---
// 1. 加總所有數字
int numsSum = nums[0];
for (int i = nums.Length-1; i > 0; --i)
{
numsSum += nums[i];
}
// 2. 先把最後一個數字記下來
int originalNumber = nums[nums.Length-1];
// 3. 把總和填入最後一個數
nums[nums.Length-1] = numsSum;
for (int i = nums.Length-2; i >= 0; --i)
{
// 4. 把最後一個數減去原初最後一個數(步驟 2 的結果)
int temp = nums[i+1] - originalNumber;
// 5. 先把倒數第二個數字記下來
originalNumber = nums[i];
// 6. 把結果記載倒數第二個數
nums[i] = temp;
}
return nums;
}
@LPenny-github
新手中的新手來求教了 😅 (C#) 十分感謝。寫得很爛,我會努力的 orz
每個人都是從零開始學起的 😊
想先就第一個版本取得回饋,無論就命名、簡潔、易讀,或註解寫作各方面
就「命名」來說,以下是我對你的程式碼的第一印象,可以參考看看 😊
public int[] RunningSum(int[] nums)
我這幾天做了十來題的 LeetCode 題目,觀察到 LeetCode 很習慣用 "nums" 來表達 "numbers" 。
就「演練命名技巧」來說,我個人會儘可能採用美式英文字典上的拼法。
我的做法是另外宣告 inputNumbers
變數。
// 「輸入的數字(複數)」
var inputNumbers = nums;
另一種做法是更改 LeetCode 提供的方法簽名(method signature)。
public int[] RunningSum(int[] inputNumbers)
// 1. 加總所有數字
int numsSum = nums[0];
這裡我覺得 numsSum
有確實地表達了「所有數字的總和」的意思,而且易懂。
// 2. 先把最後一個數字記下來
int originalNumber = nums[nums.Length-1];
這裡的「最後一個數字」與 "original" 中間些微落差。
或許可以試試 "last unmodified number", 「最後一個未被更動的數字」。 🤔
// 4. 把最後一個數減去原初最後一個數(步驟 2 的結果)
int temp = nums[i+1] - originalNumber;
這裡用 temp
沒有問題。
就我的經驗, t
或 temp
都能確實表達 "temporary" 的意思,也都很容易懂。
很清楚也很好懂,感謝 @twy30 大大! orz
@LPenny-github
補充一點:
就我的經驗, t 或 temp 都能確實表達 "temporary" 的意思,也都很容易懂。
t
, tmp
, 或 temp
來代表「暫時性( temporary )的變數」是沒問題的。swapTemp
。不知道現在還能不能參加?Ruby 版!
def running_sum(input_numbers)
input_numbers.map.with_index do |num, index|
input_numbers.slice(0, index + 1).sum
end
end
ps. 剛轉戰 ruby 一陣子,ruby 會將最後值自動回傳,所以似乎大部分人不另外賦值來做 return,不知道其他人會不會也有看不習慣的問題
@lddr99
歡迎 😊
input_numbers.map.with_index do |num, index|
我不熟 Ruby, 但這 num
, index
讀起來簡潔明瞭,能推敲出它們的用途。 👍
ps. 剛轉戰 ruby 一陣子,ruby 會將最後值自動回傳,所以似乎大部分人不另外賦值來做 return,不知道其他人會不會也有看不習慣的問題
很有趣,我自己是最習慣 C# 的語法,
end
」連結到「 C# 的 }
」感覺不難 🤔
https://leetcode.com/problems/running-sum-of-1d-array/
請參考「刷 LeetCode 練習命名」 https://github.com/EngTW/English-for-Programmers/issues/69 😊