中等題給定乙個整數陣列 nums 和乙個整數目標值 target,請你在該陣列中找出 和為目標值 的那 兩個 整數,並返回它們的陣列下標。
你可以假設每種輸入只會對應乙個答案。但是,陣列中同乙個元素不能使用兩遍。你可以按任意順序返回答案
個人答案:
class
solution}}
v.push_back(0
);v.
push_back(0
);return v;}}
;
vector<
int>
twosum
(vector<
int>
& nums,
int target)
m.insert
(make_pair
(nums[i]
, i));
} v.
resize(2
,0);
return v;
}
可以使用雜湊表改進
雜湊表:用陣列的下標表示數值,用下標對應元素的值表示是否出現或位置。這裡用stl中的map容器實現。
count(key)成員函式,統計key的個數。
用雜湊表實現,時間複雜度比較低。
給定乙個只包括 『(』,』)』,』』,』[』,』]』 的字串 s ,判斷字串是否有效。
有效字串需滿足:
左括號必須用相同型別的右括號閉合。
左括號必須以正確的順序閉合。
bool
isvalid
(string s)
unordered_map<
char
,char
> pairs =,,
','}
; stack<
char
> stk;
for(
char ch : s)
stk.
pop();
}else
}return stk.
empty()
;}
總結:右括號總是與最近的括號進行匹配,因此用棧比較方便,左括號入棧,右括號則與棧頂匹配,若為同種括號,則出棧,否則返回false,用雜湊表進行匹配可以減少**量,降低空間複雜度,最後若判斷棧是否為空,若為空則全部匹配成功,返回true,否則返回false。
在乙個長度為 n 的陣列 nums 裡的所有數字都在 0~n-1 的範圍內。陣列中某些數字是重複的,但不知道有幾個數字重複了,也不知道每個數字重複了幾次。請找出陣列中任意乙個重複的數字。
個人答案:
int
findrepeatnumber
(vector<
int>
& nums)
v_hash[nums[i]]++
;}return0;
}
總結:利用雜湊表可以比較容易完成
請實現乙個函式,把字串 s 中的每個空格替換成"%20"。
個人答案:
string replacespace
(string s)
s.replace
(pos,1,
"%20");
}return s;
}
總結:利用stl可以很方便的完成
輸入乙個鍊錶的頭節點,從尾到頭反過來返回每個節點的值(用陣列返回)。
個人答案:
vector<
int>
reverseprint
(listnode* head)
vector<
int>v;
while
(!s.
empty()
)return v;
}
總結:從尾到頭,正好對應棧的後進先出,故可以先將鍊錶依次入棧,然後依次出棧,存入陣列中。思路2,利用vector的insert函式,將沒個結點插入到頭部,v.begin()。思路3,遞迴
class
cqueue
void
(int value)
st2.
push
(value);}
intdeletehead()
int ret = st1.
top();
st1.
pop();
if(st1.
empty()
)}return ret;}}
;
總結: 思路為乙個棧1只出棧(作為佇列頭部),棧2只入棧(作為佇列尾部),當棧1為空時,將棧2的元素依次出棧儲存到棧1中,便可以反轉入棧順序,實現先進先出。
//遞迴
class
solution};
//動態規劃
class
solution
return a;}}
;
總結:最後返回a是因為多執行了一次迴圈,簡化了單獨判斷n為0的情況,實際上a為斐波那契數列中的第n天的值,b是n+1天。
在乙個 n * m 的二維陣列中,每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成乙個高效的函式,輸入這樣的乙個二維陣列和乙個整數,判斷陣列中是否含有該整數。
示例:
[
[1, 4, 7, 11, 15],
[2, 5, 8, 12, 19],
[3, 6, 9, 16, 22],
[10, 13, 14, 17, 24],
[18, 21, 23, 26, 30]
]
個人答案:
bool
findnumberin2darray
(vectorint>>
& matrix,
int target)
if(matrix[i]
[j]== target)}}
return
false
;}
本文的所有題目以及除「個人答案」以外的**均來自力扣(leetcode)。 Leetcode刷題筆記
1.兩數之和給定乙個整數陣列nums 和乙個目標值target,請你在該陣列中找出和為目標值的那兩個整數,並返回他們的陣列下標。ps 你可以假設每種輸入只會對應乙個答案。但是,你不能重複利用這個陣列中同樣的元素。思路 用target減去nums中的每乙個數,並設立乙個字典來記錄對應的下標 class...
LeetCode刷題筆記
實現strstr 給定乙個 haystack 字串和乙個 needle 字串,在 haystack 字串中找出 needle 字串出現的第乙個位置 從0開始 如果不存在,則返回 1。示例 1 輸入 haystack hello needle ll 輸出 2 示例 2 輸入 haystack aaaa...
LeetCode刷題筆記
給出兩個 非空 的鍊錶用來表示兩個非負的整數。其中,它們各自的位數是按照 逆序 的方式儲存的,並且它們的每個節點只能儲存 一位 數字。如果,我們將這兩個數相加起來,則會返回乙個新的鍊錶來表示它們的和。您可以假設除了數字 0 之外,這兩個數都不會以 0 開頭。示例 輸入 2 4 3 5 6 4 輸出 ...