刷題第一日:兩數之和
阿新 • • 發佈:2018-12-18
今天開始刷letcode,先從簡單題開始刷,不得不說,平時還是寫的少,一個賊簡單的題花了半天才寫完,還是vector用的不多.
題目如下: 給定一個整數陣列和一個目標值,找出陣列中和為目標值的兩個數。
你可以假設每個輸入只對應一種答案,且同樣的元素不能被重複利用。
示例:
給定 nums = [2, 7, 11, 15], target = 9 因為 nums[0] + nums[1] = 2 + 7 = 9 所以返回 [0, 1]
題目原地址:
我的解法:暴力求解,一個一個去試,時間複雜度O(n2)
class Solution {
public:
vector<int> twoSum(vector<int>& nums, int target) {
vector<int> result;
int leftnum;
for(int i=0;i<nums.size();i++){
leftnum=target-nums[i];
for(int j=i+1;j<nums.size();j++){
if(nums[j]==leftnum){
result. push_back(i);
result.push_back(j);
break;
}
}
if(!result.empty()){
break;//此處不知為何要判空?????
}
}
return result;
}
};
做題過程中出現的問題: (1)vector中插入元素不能用’’[]’’,*[]*只能用來遍歷 (2)定義一個vector,只需要vector result,不要寫vector result[2]; (3)vector.size()若要在迴圈中不斷使用,就用一個變數存起來,不要一直呼叫這個函式 (4)插入vector用push_back() (5)迴圈結束後要判空,if條件滿足直接跳出,不要一直繼續迴圈下去
存在的編輯問題:為什麼按了tab或者空格鍵正文格式會出問題(用的markdown編輯器)