字串相乘
給定兩個以字串形式表示的非負整數 num1 和 num2,返回 num1 和 num2 的乘積,它們的乘積也表示為字串形式。
class
solution
}//去除首位'0'
for(
int i =
0; i < n1 + n2; i++
)return
"0";}}
;
萬用字元匹配
給定乙個字串 (s) 和乙個字元模式 § ,實現乙個支援 『?』 和 『*
』 的萬用字元匹配。
『?』 可以匹配任何單個字元。
『*
』 可以匹配任意字串(包括空字串)。
兩個字串完全匹配才算匹配成功。
本題中?其實不用在意,s和p指標自增略過即可,但是*
需要著重考慮,因為可以代替任意長度。這裡有乙個容易出現的誤區,如果匹配讓*
後乙個字元等於s中判斷位置之後第乙個值則會出現錯誤。所以這裡需要記錄星號所在位置,然後繼續自增s匹配下一處相同的值
class
solution
else
if(j < n && p[j]
=='*'
)else
if(istar >=0)
else
return
false;}
while
(j < n && p[j]
=='*'
)++j;
//去除多餘星號
return j == n;}}
;
跳躍遊戲
給定乙個非負整數陣列,你最初位於陣列的第乙個位置。
陣列中的每個元素代表你在該位置可以跳躍的最大長度。
你的目標是使用最少的跳躍次數到達陣列的最後乙個位置。
本題的解法大致可以算作動態規劃:dp[0] = 1 + dp[1]或dp[2], … dp[dp[0]],倒推至可以一步到達n,則完成,計數在dp之中,然後取最小值返回即可
int
jump
(vector<
int>
& nums);if
(size ==1)
return0;
for(
int i = size -
2; i >=
0; i--)}
dp[i]
= min;}}
return dp[0]
;}
第二種方法是從頭往後貪心演算法求解
class
solution
farthest=i+nums[i];}
}return-1
;}};
全排列
給定乙個沒有重複數字的序列,返回其所有可能的全排列。
這種問題顯然採用回溯法求解,如果到最後一位則push並返回,否則求下一位
class
solution
void
backtrack
(vectorint>>
&res,vector<
int> nums,
int level)
for(
int j=level;jsize()
;j++)}
};
全排列 ii
給定乙個可包含重複數字的序列,返回所有不重複的全排列。
本題解法和上題類似,但是需要增加乙個剪枝的過程。
class
solution
void
recur_per
(vector<
int>
& nums, vector<
int>
& vec,
int row)
for(
int i =
0; i< n; i++)}
vectorint>>
permuteunique
(vector<
int>
& nums)
};
旋轉影象
給定乙個 n × n 的二維矩陣表示乙個影象。將影象順時針旋轉 90 度。
說明:你必須在原地旋轉影象,這意味著你需要直接修改輸入的二維矩陣。請不要使用另乙個矩陣來旋轉影象。
直接轉置矩陣然後映象調換即可,也可以採用乙個規律:
對於尺寸為n*n的矩陣,其任意(i, j)點,旋轉後的座標為(j, n - 1 - i)
class
solution
};
字母異位詞分組
給定乙個字串陣列,將字母異位片語合在一起。字母異位詞指字母相同,但排列不同的字串。
class
solution
vector
>ans;
mapchar
,int
>
,vector
>
::iterator it = mp.
begin()
;for
(;it!=mp.
end();
++it)
ans.
push_back
(it-
>second)
;return ans;}}
;
但是這種做法最大的問題在於時間和空間效率均極低,因此如果想要優化則應採用別的方法,比如對字母進行排序然後比較,如果相同則是字母異位詞。也可以對數字進行統計計數(位元位),計數相同為同乙個詞 Leetcode解題思路
所有簡單題的解題思路。question count the number of prime numbers less than a non negative number,n example input 10output 4explanation there are 4 prime numbers ...
leetcode 95 96 解題思路
95.unique binary search trees ii given an integer n,generate all structurally uniquebst s binary search trees that store values 1 n.example input 3out...
leetcode 160解題思路
題意 求兩個單向鍊錶的交點。要求時間複雜度為o n 空間複雜度為o 1 答案如下 include include using namespace std definition for singly linked list.struct listnode 方法一 unordered map,時間複雜度...