日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

2053. 数组中第 K 个独一无二的字符串

發(fā)布時(shí)間:2023/11/29 编程问答 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 2053. 数组中第 K 个独一无二的字符串 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

2053. 數(shù)組中第 K 個(gè)獨(dú)一無二的字符串

獨(dú)一無二的字符串?指的是在一個(gè)數(shù)組中只出現(xiàn)過 一次?的字符串。

給你一個(gè)字符串?dāng)?shù)組?arr?和一個(gè)整數(shù)?k?,請你返回?arr?中第?k?個(gè)?獨(dú)一無二的字符串?。如果?少于?k?個(gè)獨(dú)一無二的字符串,那么返回?空字符串?“”?。

注意,按照字符串在原數(shù)組中的 順序?找到第 k?個(gè)獨(dú)一無二字符串。

示例 1: 輸入:arr = ["d","b","c","b","c","a"], k = 2 輸出:"a" 解釋: arr 中獨(dú)一無二字符串包括 "d" 和 "a"?。 "d" 首先出現(xiàn),所以它是第 1 個(gè)獨(dú)一無二字符串。 "a" 第二個(gè)出現(xiàn),所以它是 2 個(gè)獨(dú)一無二字符串。 由于 k == 2 ,返回 "a" 。示例 2: 輸入:arr = ["aaa","aa","a"], k = 1 輸出:"aaa" 解釋: arr 中所有字符串都是獨(dú)一無二的,所以返回第 1 個(gè)字符串 "aaa" 。示例 3: 輸入:arr = ["a","b","a"], k = 3 輸出:"" 解釋: 唯一一個(gè)獨(dú)一無二字符串是 "b" 。由于少于 3 個(gè)獨(dú)一無二字符串,我們返回空字符串 "" 。

提示:

  • 1 <= k <= arr.length <= 1000
  • 1 <= arr[i].length <= 5
  • arr[i]?只包含小寫英文字母。

解題思路

使用map維護(hù)字符串以及其在數(shù)組中出現(xiàn)次數(shù)的關(guān)系,再次遍歷數(shù)組,找出只出現(xiàn)一次的字符串,并且找出第k個(gè)出現(xiàn)次數(shù)為1次的字符串,如果出現(xiàn)次數(shù)小于1的字符串的個(gè)數(shù)小于k,則返回一個(gè)空串。

代碼

class Solution { public:string kthDistinct(vector<string>& arr, int k) {map<string,int> m;for (int i = 0; i < arr.size(); ++i) {m[arr[i]]++;}for (int i = 0; i < arr.size(); ++i) {if (m[arr[i]]==1&&--k==0)return arr[i];}return "";} };
  • 時(shí)間復(fù)雜度:O(∑ini)O(\sum_i n_i)O(i?ni?),即數(shù)組 arr\textit{arr}arr 中字符串長度總和,其中 nin_ini?為字符串 arr[i]\textit{arr}[i]arr[i] 的長度。即為維護(hù)頻數(shù)哈希表和尋找第 k 個(gè)獨(dú)一無二的字符串的時(shí)間復(fù)雜度。

  • 空間復(fù)雜度:O(∑ini)O(\sum_i n_i)O(i?ni?),即為哈希集合的空間開銷。

總結(jié)

以上是生活随笔為你收集整理的2053. 数组中第 K 个独一无二的字符串的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。