leetcode解題思路分析(七)43 49題

2021-10-02 03:19:22 字數 2969 閱讀 5996

字串相乘

給定兩個以字串形式表示的非負整數 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,時間複雜度...