百度推廣入口登錄百度推廣關(guān)鍵詞怎么優(yōu)化
本專欄為c語(yǔ)言練習(xí)專欄,適合剛剛學(xué)完c語(yǔ)言的初學(xué)者。本專欄每天會(huì)不定時(shí)更新,通過(guò)每天練習(xí),進(jìn)一步對(duì)c語(yǔ)言的重難點(diǎn)知識(shí)進(jìn)行更深入的學(xué)習(xí)。
今日練習(xí)題關(guān)鍵字:字符個(gè)數(shù)統(tǒng)計(jì) 多數(shù)元素 投票法
💓博主csdn個(gè)人主頁(yè):小小unicorn
?專欄分類:C語(yǔ)言天天練
🚚代碼倉(cāng)庫(kù):小小unicorn的代碼倉(cāng)庫(kù)🚚
🌹🌹🌹關(guān)注我?guī)銓W(xué)習(xí)編程知識(shí)
Day1
- 題目一:
- 題目描述:
- 解題思路:
- 代碼實(shí)現(xiàn):
- 結(jié)果情況:
- 題目二:
- 題目描述:
- 解題思路:
- 代碼實(shí)現(xiàn):
- 結(jié)果情況:
- 總結(jié):
題目一:
題目描述:
題目來(lái)源:字符個(gè)數(shù)統(tǒng)計(jì)
編寫一個(gè)函數(shù),計(jì)算字符串中含有的不同字符的個(gè)數(shù)。字符在 ASCII 碼范圍內(nèi)( 0~127 ,包括 0 和 127 ),換行表示結(jié)束符,不算在字符里。不在范圍內(nèi)的不作統(tǒng)計(jì)。多個(gè)相同的字符只計(jì)算一次
例如,對(duì)于字符串 abaca 而言,有 a、b、c 三種不同的字符,因此輸出 3 。
數(shù)據(jù)范圍: 1≤n≤500
解題思路:
運(yùn)用的是HASH表的思想,因?yàn)橹挥凶疃嘀挥?28種數(shù)據(jù),所以只需維護(hù)一個(gè)大小為128的字符數(shù)組,讓輸入的字符作為數(shù)組下標(biāo),取出這個(gè)下標(biāo)數(shù)組中的字符直接與輸入的字符比較(不用for循環(huán)從頭再查),如果相同則跳過(guò),不同則賦值,讓結(jié)果++,最后遇到’\n’結(jié)束循環(huán),返回結(jié)果即可。
代碼實(shí)現(xiàn):
#include<stdio.h>int main()
{int hash[128] = {0};char B;int count = 0;while (scanf("%1c", &B) != EOF) {int asc = (int)B;if (hash[asc] != 1) {count++;hash[asc] = 1;}}printf("%d", count - 1); //需要去掉最后的回車鍵
}
結(jié)果情況:
符合題目要求,問(wèn)題得到解決。
題目二:
題目描述:
題目來(lái)源:多數(shù)元素
給定一個(gè)大小為 n 的數(shù)組 nums ,返回其中的多數(shù)元素。多數(shù)元素是指在數(shù)組中出現(xiàn)次數(shù) 大于 ? n/2 ? 的元素。
你可以假設(shè)數(shù)組是非空的,并且給定的數(shù)組總是存在多數(shù)元素。
解題思路:
投票法:
因?yàn)槎鄶?shù)元素在數(shù)組里出現(xiàn)的次數(shù)絕對(duì)大于n/2,所以用不同元素消去相同元素,剩下的必然是相同元素
代碼實(shí)現(xiàn):
int majorityElement(int* nums, int numsSize)
{int candidate=nums[0];//投票對(duì)象int count=1;//票數(shù)for(int i=1;i<numsSize;i++)//遍歷投票對(duì)象{if(nums[i]==candidate)//投票對(duì)象相同,票數(shù)+1{count++;}else//投票對(duì)象不同,票數(shù)-1{count--;if(count<0)//該元素不是多數(shù)元素,更新投票對(duì)象candidate并把票數(shù)置1{candidate=nums[i];count=1;}}}return candidate;
}
結(jié)果情況:
符合題目要求,問(wèn)題得到解決。
總結(jié):
文章到這里就要告一段落了,有更好的想法或問(wèn)題,歡迎評(píng)論區(qū)留言。
希望今天的練習(xí)能對(duì)您有所收獲,咱們下期見(jiàn)!