D5|leetcode 242薪韩、leetcode 349、leetcode 202捌锭、

LeetCode 242.有效的字母異位詞

題目:

給定兩個(gè)字符串?s?和?t?躬存,編寫(xiě)一個(gè)函數(shù)來(lái)判斷?t?是否是?s?的字母異位詞。若s?和?t?中每個(gè)字符出現(xiàn)的次數(shù)都相同舀锨,則稱s?和?t?互為字母異位詞岭洲。

思路:

首先定義一個(gè)數(shù)組,大小為26坎匿,每一個(gè)位置表示對(duì)應(yīng)的字母盾剩,例如0表示'a'......。字符串s中每出現(xiàn)一個(gè)字母替蔬,就將數(shù)組的對(duì)應(yīng)位置+1告私,這里尋找數(shù)組下標(biāo)的方法是s[i] -'a',用相對(duì)距離尋找下標(biāo)承桥。同理驻粟,字符串每出現(xiàn)一個(gè)字母,就將更新完的數(shù)組對(duì)應(yīng)位置-1。最后判斷數(shù)組蜀撑,如果數(shù)組全部為0挤巡,則返回true,否則返回false酷麦。

代碼:

class Solution {

public:

? ? bool isAnagram(string s, string t) {

? ? int hash[26]={0};

? ? for(int i=0;i<s.size();i++)

? ? {

? ? ? ? hash[s[i]-'a']++;

? ? }

? ? for(int i=0;i<t.size();i++)

? ? {

? ? ? ? hash[t[i]-'a']--;

? ? }

? ? for(int i=0;i<26;i++)

? ? {

? ? ? ? if(hash[i]!=0)

? ? ? ? return false;

? ? }

? ? return true;

? ? }

};


LeetCode 349.兩個(gè)數(shù)組的交集

題目:

給定兩個(gè)數(shù)組?nums1?和?nums2?矿卑,返回?它們的交集?。

思路:

因?yàn)楣俜綄?duì)于輸入的nums大小有限制沃饶,這道題可以用set來(lái)解決母廷,也可以用數(shù)組來(lái)解決。

思路1:

用set來(lái)解決糊肤。要找到兩個(gè)數(shù)組的交集琴昆,相當(dāng)于在一個(gè)數(shù)組里面找到另一個(gè)數(shù)組的元素,為了找的更快馆揉,應(yīng)該采用哈希表來(lái)解決椎咧。同時(shí)因?yàn)橹挥梅祷亟患脑囟豢紤]重復(fù)的次數(shù),所以這里用unordered_set把介。

代碼1:

class Solution {

public:

? ? vector<int> intersection(vector<int>& nums1, vector<int>& nums2) {

? ? unordered_set<int> temp;

? ? unordered_set<int> num_set(nums1.begin(),nums1.end());

? ? for(int num:nums2)

? ? {

? ? ? ? if(num_set.find(num)!=num_set.end())

? ? ? ? {

? ? ? ? ? ? temp.insert(num);

? ? ? ? }

? ? }

? ? vector<int> result(temp.begin(),temp.end());

? ? return result;

? ? }

};

思路2:

因?yàn)楸绢}給了限制勤讽,數(shù)組最大1000,所以也可以使用數(shù)組來(lái)解決拗踢。注意:如果沒(méi)有規(guī)定數(shù)組的大小脚牍、或者數(shù)組過(guò)大、或者數(shù)組的元素很分散(例如:1巢墅,2诸狭,1000000),這些情況用set來(lái)解決更高效君纫。

代碼2:

class Solution {

public:

? ? vector<int> intersection(vector<int>& nums1, vector<int>& nums2) {

? ? unordered_set<int> temp;

? ? int hash[1010]={0};

? ? for(int i=0;i<nums1.size();i++)

? ? {

? ? ? ? hash[nums1[i]]=1;

? ? }

? ? for(int i=0;i<nums2.size();i++)

? ? {

? ? ? ? if(hash[nums2[i]]!=0)

? ? ? ? {

? ? ? ? ? ? temp.insert(nums2[i]);

? ? ? ? }

? ? }

? ? vector<int> result(temp.begin(),temp.end());

? ? return result;

? ? }

};


LeetCode 202.快樂(lè)數(shù)

題目:

編寫(xiě)一個(gè)算法來(lái)判斷一個(gè)數(shù)?n?是不是快樂(lè)數(shù)驯遇。「快樂(lè)數(shù)」定義為:對(duì)于一個(gè)正整數(shù),每一次將該數(shù)替換為它每個(gè)位置上的數(shù)字的平方和蓄髓。然后重復(fù)這個(gè)過(guò)程直到這個(gè)數(shù)變?yōu)?1叉庐,也可能是?無(wú)限循環(huán)?但始終變不到 1。如果這個(gè)過(guò)程?結(jié)果為1会喝,那么這個(gè)數(shù)就是快樂(lè)數(shù)陡叠。如果?n?是?快樂(lè)數(shù)?就返回?true?;不是肢执,則返回?false?枉阵。

思路:

這道題的關(guān)鍵是“無(wú)線循環(huán)”,當(dāng)平方和sum不是1時(shí)预茄,函數(shù)則會(huì)陷入死循環(huán)兴溜,應(yīng)該找到一個(gè)終止的條件:保存每次sum的值,如果sum的值在之后的更新中一直不是1且又出現(xiàn)了,那說(shuō)明這個(gè)數(shù)一定不是快樂(lè)數(shù)拙徽,此時(shí)就可以返回false了刨沦,而判斷sum值是否重復(fù),可以使用哈希表來(lái)搜索斋攀。

代碼:

class Solution {

public:

int getsum(int n)

? ? {

? ? ? ? int sum =0;

? ? ? ? while(n)

? ? ? ? {

? ? ? ? ? ? sum+=(n%10)*(n%10);

? ? ? ? ? ? n/=10;

? ? ? ? }

? ? ? ? return sum;

? ? }

? ? bool isHappy(int n) {

? ? unordered_set<int> result;

? ? int sum=0;

? ? while(1)

? ? {

? ? ? ? sum=getsum(n);

? ? ? ? if(sum==1)

? ? ? ? {

? ? ? ? ? ? return true;

? ? ? ? }

? ? ? ? if(result.find(sum)==result.end())

? ? ? ? {

? ? ? ? ? ? result.insert(sum);

? ? ? ? }else{

? ? ? ? ? ? return false;

? ? ? ? }

? ? ? ? n=sum;

? ? }

? ? }

};


LeetCode 1.兩數(shù)之和

題目:

給定一個(gè)整數(shù)數(shù)組?nums和一個(gè)整數(shù)目標(biāo)值?target,請(qǐng)你在該數(shù)組中找出?和為目標(biāo)值?target? 的那?兩個(gè)?整數(shù)梧田,并返回它們的數(shù)組下標(biāo)淳蔼。

思路:

暴力的解法是用兩層for循環(huán)下通過(guò)兩個(gè)數(shù)相加得到target的值。如果采用哈希法裁眯,用一個(gè)指針指向當(dāng)前的數(shù)值鹉梨,那么target減去當(dāng)前的數(shù)值就能得到我們需要找到的數(shù)值,通過(guò)哈希法在當(dāng)前數(shù)值之前搜索我們需要的數(shù)值就能找到問(wèn)題的解穿稳,這樣就避免了使用for循環(huán)查找存皂,復(fù)雜度就減小了。值得注意的是逢艘,首先因?yàn)槲覀円4婷恳粋€(gè)遍歷的數(shù)值以及下標(biāo)旦袋,所以采用map結(jié)構(gòu);其次map的搜索是針對(duì)key值搜索它改,所以應(yīng)該把數(shù)值賦給key疤孕,而下標(biāo)值賦給value。

代碼:

class Solution {

public:

? ? vector<int> twoSum(vector<int>& nums, int target) {

? ? std::unordered_map<int,int> res;

? ? for(int i=0;i<nums.size();i++)

? ? {

? ? ? ? auto it=res.find(target-nums[i]);

? ? ? ? if(it!=res.end())

? ? ? ? {

? ? ? ? ? ? return {it->second,i};

? ? ? ? }

? ? ? ? res.insert(pair<int, int>(nums[i], i));

? ? }

? ? return {};

? ? }

};

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末央拖,一起剝皮案震驚了整個(gè)濱河市祭阀,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌鲜戒,老刑警劉巖专控,帶你破解...
    沈念sama閱讀 216,651評(píng)論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異遏餐,居然都是意外死亡伦腐,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,468評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門(mén)失都,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)蔗牡,“玉大人,你說(shuō)我怎么就攤上這事嗅剖”缭剑” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 162,931評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵信粮,是天一觀的道長(zhǎng)黔攒。 經(jīng)常有香客問(wèn)我,道長(zhǎng),這世上最難降的妖魔是什么督惰? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,218評(píng)論 1 292
  • 正文 為了忘掉前任不傅,我火速辦了婚禮,結(jié)果婚禮上赏胚,老公的妹妹穿的比我還像新娘访娶。我一直安慰自己,他們只是感情好觉阅,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,234評(píng)論 6 388
  • 文/花漫 我一把揭開(kāi)白布崖疤。 她就那樣靜靜地躺著,像睡著了一般典勇。 火紅的嫁衣襯著肌膚如雪劫哼。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 51,198評(píng)論 1 299
  • 那天割笙,我揣著相機(jī)與錄音权烧,去河邊找鬼。 笑死伤溉,一個(gè)胖子當(dāng)著我的面吹牛般码,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播乱顾,決...
    沈念sama閱讀 40,084評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼侈询,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了糯耍?” 一聲冷哼從身側(cè)響起扔字,我...
    開(kāi)封第一講書(shū)人閱讀 38,926評(píng)論 0 274
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎温技,沒(méi)想到半個(gè)月后革为,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,341評(píng)論 1 311
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡舵鳞,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,563評(píng)論 2 333
  • 正文 我和宋清朗相戀三年震檩,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片蜓堕。...
    茶點(diǎn)故事閱讀 39,731評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡抛虏,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出套才,到底是詐尸還是另有隱情迂猴,我是刑警寧澤,帶...
    沈念sama閱讀 35,430評(píng)論 5 343
  • 正文 年R本政府宣布背伴,位于F島的核電站沸毁,受9級(jí)特大地震影響峰髓,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜息尺,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,036評(píng)論 3 326
  • 文/蒙蒙 一携兵、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧搂誉,春花似錦徐紧、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,676評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至凛虽,卻和暖如春死遭,著一層夾襖步出監(jiān)牢的瞬間广恢,已是汗流浹背凯旋。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,829評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留钉迷,地道東北人至非。 一個(gè)月前我還...
    沈念sama閱讀 47,743評(píng)論 2 368
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像糠聪,于是被迫代替她去往敵國(guó)和親荒椭。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,629評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容