昨天將另外一邊鐵人賽的文案和實例寫完了,所以今天開始必須處理這邊了。
前面的我會補上解說,然後今天開始....念英文加刷題XD
然後因為要念英文不敢一天刷太多,希望一天一題就好......
(等我念到煩再刷...如果我一天發太多題,肯定是我那天沒好好練習英文QwQ)
給你一個數字陣列和一個目標數字,請問哪兩個數字相加會等於目標數字,並回傳他們的索引值。
其中必定含有一組答案,且你不可以重複使用同一個數字。
舉例:
nums=[2,7,11,15],target=9
因為 nums[0]+nums[1]==9
所以 return [0,1]
硬幹。但記得 j 必須設 i+1 ,因為他要求不可重複使用同一個數字。
class Solution {
public:
vector<int> twoSum(vector<int>& nums, int target) {
vector<int> ans;
for(int i=0;i<nums.size();i++)
{
for(int j=i+1;j<nums.size();j++)
{
if(nums[i]+nums[j]==target)
{
ans.push_back(i);
ans.push_back(j);
return ans;
}
}
}
return ans;
}
};
我......太久沒碰c++,也太久沒寫vector,還重複查了一下才寫,雖然總體耗時不到半小時。
這裡有vector的教學,我是看這裡寫的。
然後我還遇到過一個問題,原本我寫的時候我下方那個return是不存在的。因為我覺得反正你都一定會有一組數字回傳了,為什麼還要我寫呢?
但LeetCode卻報錯給我了error: control reaches end of non-void function [-Werror=return-type]
他的意思是,你曾經承諾會return 一個vector給我的,怎麼沒有return呢?他並沒有實際測試才知道,他是直接看看就覺得寫的不完整。(C++和Python差異QwQ)
接著寫完我又覺得全身不得勁,然後上網查了個笨問題。
vector的return能像python一樣,寫[i,j]不?參考網站
答案貌似不可以QAQ,難道是我的問題嗎QAQ,太久沒寫了,手感不對QAQ