国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【力扣·每日一題】2085.統(tǒng)計(jì)出現(xiàn)過一次的公共字符串(模擬 哈希表 優(yōu)化 C++ Go)

這篇具有很好參考價(jià)值的文章主要介紹了【力扣·每日一題】2085.統(tǒng)計(jì)出現(xiàn)過一次的公共字符串(模擬 哈希表 優(yōu)化 C++ Go)。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

題目鏈接

題意

給你兩個(gè)字符串?dāng)?shù)組 words1 和 words2 ,請(qǐng)你返回在兩個(gè)字符串?dāng)?shù)組中 都恰好出現(xiàn)一次 的字符串的數(shù)目。
輸入:words1 = [“l(fā)eetcode”,“is”,“amazing”,“as”,“is”], words2 = [“amazing”,“l(fā)eetcode”,“is”]
輸出:2
解釋:

  • “l(fā)eetcode” 在兩個(gè)數(shù)組中都恰好出現(xiàn)一次,計(jì)入答案。
  • “amazing” 在兩個(gè)數(shù)組中都恰好出現(xiàn)一次,計(jì)入答案。
  • “is” 在兩個(gè)數(shù)組中都出現(xiàn)過,但在 words1 中出現(xiàn)了 2 次,不計(jì)入答案。
  • “as” 在 words1 中出現(xiàn)了一次,但是在 words2 中沒有出現(xiàn)過,不計(jì)入答案。
    所以,有 2 個(gè)字符串在兩個(gè)數(shù)組中都恰好出現(xiàn)了一次。
    提示:

1 < = w o r d s 1. l e n g t h , w o r d s 2. l e n g t h < = 1000 1 <= words1.length, words2.length <= 1000 1<=words1.length,words2.length<=1000
1 < = w o r d s 1 [ i ] . l e n g t h , w o r d s 2 [ j ] . l e n g t h < = 30 1 <= words1[i].length, words2[j].length <= 30 1<=words1[i].length,words2[j].length<=30
w o r d s 1 [ i ] words1[i] words1[i] w o r d s 2 [ j ] words2[j] words2[j] 都只包含小寫英文字母。

思路1

  • 用哈希表mp1來統(tǒng)計(jì)word1中每個(gè)字符串的出現(xiàn)次數(shù)
  • 用哈希表mp2來統(tǒng)計(jì)word2中每個(gè)字符串的出現(xiàn)次數(shù)
  • 遍歷哈希表mp1,判斷它在word1,word2中的出現(xiàn)次數(shù)是否都是1,如果都是1的話,記錄答案
  • 時(shí)間復(fù)雜度為 O ( n + m ) O(n+m) O(n+m),空間復(fù)雜度為 O ( n + m ) O(n+m) O(n+m),其中 n n nword1里所有字符串的長(zhǎng)度和, m m mword2里所有字符串的長(zhǎng)度和

代碼1

golang版本代碼

【力扣·每日一題】2085.統(tǒng)計(jì)出現(xiàn)過一次的公共字符串(模擬 哈希表 優(yōu)化 C++ Go),力扣,leetcode,散列表,c++

func countWords(words1 []string, words2 []string) int {
	mp1 := make(map[string]int, len(words1))
	mp2 := make(map[string]int, len(words2))
	for _, word := range words1 {
		mp1[word]++
	}
	for _, word := range words2 {
		mp2[word]++
	}
	var ans = 0
	for k, v := range mp1 {
		if v != 1 {
			continue
		}
		if cnt, ok := mp2[k]; ok && cnt == 1 {
			ans++
		}
	}
	return ans
}

c++版本代碼

【力扣·每日一題】2085.統(tǒng)計(jì)出現(xiàn)過一次的公共字符串(模擬 哈希表 優(yōu)化 C++ Go),力扣,leetcode,散列表,c++

class Solution {
	public:
		int countWords(vector<string>& words1, vector<string>& words2) {
			map<string,int>mp1,mp2;
			for(auto word:words1) {
				mp1[word]++;
			}
			for(auto word:words2) {
				mp2[word]++;
			}
			int ans = 0;
			for(auto it:mp1) {
				if (it.second == 1 && mp2[it.first] == 1) {
					ans++;
				}
			}
			return ans;
		}
};

思路2

  • 基于思路1的基礎(chǔ)上,考慮能否只用一個(gè)哈希表完成題目
  • 先用哈希表mp來統(tǒng)計(jì)word1中每個(gè)字符串的出現(xiàn)次數(shù)
  • 遍歷word2的字符串word,對(duì)mp[word]的情況進(jìn)行討論
    • mp[word]=1 說明wordword1里出現(xiàn)了一次,更新答案,且將mp[word]賦值為一個(gè)特殊的數(shù)字,這里賦值為-1
    • mp[word]=-1說明wordword2里已經(jīng)出現(xiàn)了一次,當(dāng)前是第二次,更新答案(這里是ans--,因?yàn)?code>word已經(jīng)不符合條件了),且將mp[word]賦值為正常的計(jì)數(shù)2
  • 看了下運(yùn)行截圖還是優(yōu)化了下空間的

代碼2

golang版本代碼

【力扣·每日一題】2085.統(tǒng)計(jì)出現(xiàn)過一次的公共字符串(模擬 哈希表 優(yōu)化 C++ Go),力扣,leetcode,散列表,c++

func countWords(words1 []string, words2 []string) int {
	mp := make(map[string]int, len(words1))
	for _, word := range words1 {
		mp[word]++
	}
	var ans = 0
	for _, word := range words2 {
		switch mp[word] {
		case 1:
			ans++
			mp[word] = -1
		case -1:
			ans--
			mp[word] = 2
		}
	}
	return ans
}

c++版本代碼

【力扣·每日一題】2085.統(tǒng)計(jì)出現(xiàn)過一次的公共字符串(模擬 哈希表 優(yōu)化 C++ Go),力扣,leetcode,散列表,c++文章來源地址http://www.zghlxwxcb.cn/news/detail-812614.html

class Solution {
	public:
		int countWords(vector<string>& words1, vector<string>& words2) {
			map<string,int>mp;
			for(auto word:words1) {
				mp[word]++;
			}
            int ans = 0;
			for(auto word:words2) {
				if(mp[word]==1) {
					mp[word] = -1;
					ans ++;
				} else if(mp[word]==-1) {
					mp[word] = 2;
					ans --;
				}
			}
			return ans;
		}
};

到了這里,關(guān)于【力扣·每日一題】2085.統(tǒng)計(jì)出現(xiàn)過一次的公共字符串(模擬 哈希表 優(yōu)化 C++ Go)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 每日一題——只出現(xiàn)一次的數(shù)字

    每日一題——只出現(xiàn)一次的數(shù)字

    題目鏈接 要求為線性時(shí)間復(fù)雜度,即 時(shí)間復(fù)雜度為O(n) ,那么我們就不能用簡(jiǎn)單的兩層循環(huán)來解決問題 要求只能使用常量額外空間,即 空間復(fù)雜度為O(1) ,那么我們就不能額外開辟一個(gè)數(shù)組來記錄每個(gè)元素出現(xiàn)的次數(shù) 這里,給大家介紹一個(gè)全新的方法:位運(yùn)算——異或^ 注

    2024年02月15日
    瀏覽(19)
  • 2023年7月3日leetcode每日一題打卡——136.只出現(xiàn)一次的數(shù)字

    136. 只出現(xiàn)一次的數(shù)字 - 力扣(LeetCode) 給你一個(gè) 非空 整數(shù)數(shù)組 nums ,除了某個(gè)元素只出現(xiàn)一次以外,其余每個(gè)元素均出現(xiàn)兩次。找出那個(gè)只出現(xiàn)了一次的元素。 你必須設(shè)計(jì)并實(shí)現(xiàn) 線性時(shí)間復(fù)雜度 的算法來解決此問題,且該算法 只使用常量額外空間 。 示例1: 示例2: 示

    2024年02月12日
    瀏覽(23)
  • 【LeetCode】每日一題&最后一個(gè)單詞的長(zhǎng)度&投票法求解多數(shù)元素&異或操作符巧解只出現(xiàn)一次的數(shù)字&整數(shù)反轉(zhuǎn)

    ========================================================================= 個(gè)人主頁直達(dá): 小白不是程序媛 LeetCode系列專欄: LeetCode刷題掉發(fā)記 ========================================================================= 目錄 LeetCode 58.最后一個(gè)單詞的長(zhǎng)度 LeetCode169.多數(shù)元素 LeetCode 136.出現(xiàn)一次的數(shù)字 LeetCode 7.整數(shù)

    2024年02月08日
    瀏覽(25)
  • 只出現(xiàn)一次的數(shù)字——力扣136
  • 力扣刷題SQL-619. 只出現(xiàn)一次的最大數(shù)字

    力扣刷題SQL-619. 只出現(xiàn)一次的最大數(shù)字

    MyNumbers 表: +-------------+------+ | Column Name | Type | +-------------+------+ | num ? ? ? ? | int ?| +-------------+------+ 這張表沒有主鍵。可能包含重復(fù)數(shù)字。這張表的每一行都含有一個(gè)整數(shù)。 單一數(shù)字 是在 MyNumbers 表中只出現(xiàn)一次的數(shù)字。 請(qǐng)你編寫一個(gè) SQL 查詢來報(bào)告 最大的 單一 數(shù)字

    2024年02月16日
    瀏覽(20)
  • 力扣(LeetCode)算法_C++—— 只出現(xiàn)一次的數(shù)字

    給你一個(gè) 非空 整數(shù)數(shù)組 nums ,除了某個(gè)元素只出現(xiàn)一次以外,其余每個(gè)元素均出現(xiàn)兩次。找出那個(gè)只出現(xiàn)了一次的元素。 你必須設(shè)計(jì)并實(shí)現(xiàn)線性時(shí)間復(fù)雜度的算法來解決此問題,且該算法只使用常量額外空間。 示例 1 : 輸入:nums = [2,2,1] 輸出:1 示例 2 : 輸入:nums = [4,

    2024年02月09日
    瀏覽(20)
  • Git忽略已經(jīng)提交過一次的文件 Git忽略文件

    1、從未提交過的文件可以用.gitignore ? ? ?也就是添加之后從來沒有提交(commit)過的文件,可以使用.gitignore忽略該文件 ?該文件只能作用于未跟蹤的文件(Untracked Files),也就是那些從來沒有被 git 記錄過的文件 ?比如,忽略配置文件,可以在.gitignore中寫 2、已經(jīng)推送(p

    2024年02月12日
    瀏覽(102)
  • 力扣每日一題--2088. 統(tǒng)計(jì)農(nóng)場(chǎng)中肥沃金字塔的數(shù)目

    力扣每日一題--2088. 統(tǒng)計(jì)農(nóng)場(chǎng)中肥沃金字塔的數(shù)目

    看到這道題有些人很容易放棄,其實(shí)這道題不是很難,主要是題目長(zhǎng),讀的容易讓人放棄,但是 只要抓住一些性質(zhì)就可以解決該問題。 ? ? 本題中的定義放到圖像里其實(shí)就是個(gè)金字塔,下層的那部分比上一層的那部分,長(zhǎng)度加2, 并且該層那個(gè)長(zhǎng)度區(qū)間內(nèi)都是1才行。是個(gè)金

    2024年01月18日
    瀏覽(27)
  • 【力扣每日一題】2023.8.24 統(tǒng)計(jì)參與通信的服務(wù)器

    【力扣每日一題】2023.8.24 統(tǒng)計(jì)參與通信的服務(wù)器

    目錄 題目: 示例: 分析: 代碼: 題目顧名思義,要我們統(tǒng)計(jì)參與通信的服務(wù)器,給我們一個(gè)二維矩陣,元素為1的位置則表示是一臺(tái)服務(wù)器。 判斷一臺(tái)服務(wù)器是否參與通信的條件是同一列或是同一行中也有服務(wù)器。 那么我們只需要遍歷整個(gè)矩陣,遇到服務(wù)器的時(shí)候我們進(jìn)

    2024年02月11日
    瀏覽(18)
  • 只出現(xiàn)一次的數(shù)字

    問題: 給你一個(gè)? 非空 ?整數(shù)數(shù)組? nums ?,除了某個(gè)元素只出現(xiàn)一次以外,其余每個(gè)元素均出現(xiàn)兩次。找出那個(gè)只出現(xiàn)了一次的元素。 你必須設(shè)計(jì)并實(shí)現(xiàn)線性時(shí)間復(fù)雜度的算法來解決此問題,且該算法只使用常量額外空間。 示例: 示例 1 : 示例 2 : 示例 3 : 思想: 由于

    2024年02月07日
    瀏覽(23)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包