各位大神馋辈,你們好覆获,力扣第一題是兩數(shù)之和,其實(shí)這道題別看簡(jiǎn)單贸弥,但是是啟蒙,出在第一題是合理的
能想到的解法是窟坐,暴力
for(a in nums)
for(b in nums)
if(nums[a]+nums[b]==target and a!=b)
return 結(jié)果
解法二排序+雙指針
sort(nums.begin(),nums.end())
int i=0,b=nums.size()-1;
do{
? if(nums[i]+nums[j]<target){
i++;
}
if(nums[i]+nums[j]>target){
j--;}
else 返回結(jié)果
}
while(i<j)
解法三 排序加二分法
sort(nums.begin(),nums.end());
for(int i=0;i<nums.size()-1;i++){
? int j=binary_search(target-nums[i]);
if(j!=-1)返回結(jié)果
}
解法四 hash表
set<int> set;
for(auto d:nums){
if(set.find(target-d)!=set.end())
return {d,target-d}};
set.add(d);
}
方法五 拆分target為兩數(shù)之和,然后再?gòu)臄?shù)組里去映射,這屬于窮舉了
int a=0,b=0;
for(a=-1000000000;a<=target/2;a++){
b=target-a;
}
方法六 ChatGPT解決
方法七:多線程處理
方法八:分治思想
方法九轉(zhuǎn)換為二進(jìn)制累加
方法十 你的辦法是绵疲?