2020-02-21

給定數(shù)組 [‘1a’,'2b','3c','5a'] 山孔,輸出出現(xiàn)次數(shù)最多的字母前數(shù)字之和: 6坛悉。

// 或許會(huì)有類似這樣 "11ad" 的元素 ? 不會(huì)裸影,每個(gè)元素中只會(huì)有一個(gè)字母,case可作為邊界條件考慮

// let calculateSum = (list = []) => {
//   const reg = /^(\d+)([a-zA-Z]+)/;
//   let wordMap = new Map();

//   for (let i = 0; i < list.length; i++) {
//     const item = list[i];
//     if (reg.test(item)) {
//       const res = reg.exec(item);
//       const number = Number(res[1]);
//       const word = res[2];

//       if (word.length !== 1) {
//         console.error(`輸入數(shù)組的第 ${i + 1} 個(gè)數(shù)據(jù)項(xiàng)格式錯(cuò)誤轩猩,請(qǐng)更正!`)
//         break;
//       }
//       const val = wordMap.get(word);
//       wordMap.set(word, {
//         appearCount: val ? val.appearCount + 1 : 1, // 字母出現(xiàn)次數(shù)
//         sumNumber: val ? val.sumNumber + number : number, // 該字母前的數(shù)字之和
//       });
//     } else {
//       console.error(`輸入數(shù)組的第 ${i + 1} 個(gè)數(shù)據(jù)項(xiàng)格式錯(cuò)誤界轩,請(qǐng)更正画饥!`)
//       break;
//     }
//   }

//   console.log(wordMap);
//   let maxCount = 0, maxSum = 0;
//   wordMap.forEach((item) => {
//     const { appearCount, sumNumber } = item;
//     if (appearCount > maxCount) { // 對(duì)比出現(xiàn)次數(shù)
//       maxCount = appearCount;
//       maxSum = sumNumber;
//     }
//   })

//   console.log(maxSum);
//   return maxSum;
// }

// calculateSum(['1a', '2b', '3c', '5a']);

// 第一次跑失斚挝汀:node 執(zhí)行文件 路徑錯(cuò)誤
// 第二次跑失敗:輸出15抖甘,發(fā)現(xiàn)加和時(shí) 發(fā)生了字符串拼接
// 第三次跑成功:時(shí)間復(fù)雜度 O(2n)热鞍,空間復(fù)雜度 O(n),開始優(yōu)化:

let calculateSum = (list = []) => {
  const reg = /^(\d+)([a-zA-Z]+)/;
  let wordMap = new Map(), maxCount = 0, maxSum = 0;

  for (let i = 0; i < list.length; i++) {
    const item = list[i];
    if (reg.test(item)) {
      const res = reg.exec(item);
      const number = Number(res[1]);
      const word = res[2];

      if (word.length !== 1) {
        console.error(`輸入數(shù)組的第 ${i + 1} 個(gè)數(shù)據(jù)項(xiàng)格式錯(cuò)誤薇宠,請(qǐng)更正偷办!`)
        break;
      }
      const val = wordMap.get(word);
      wordMap.set(word, {
        appearCount: val ? val.appearCount + 1 : 1, // 字母出現(xiàn)次數(shù)
        sumNumber: val ? val.sumNumber + number : number, // 該字母前的數(shù)字之和
      });

      const { appearCount, sumNumber } = wordMap.get(word);
      if (appearCount > maxCount) { // 對(duì)比出現(xiàn)次數(shù)
        maxCount = appearCount;
        maxSum = sumNumber;
      }
    } else {
      console.error(`輸入數(shù)組的第 ${i + 1} 個(gè)數(shù)據(jù)項(xiàng)格式錯(cuò)誤澄港,請(qǐng)更正!`)
      break;
    }
  }
  console.log(wordMap);
  console.log(maxSum);
  return maxSum;
}

calculateSum(['1a', '2b', '3c', '5a']);

// 第四次跑成功:優(yōu)化成功回梧,合并為一次循環(huán)废岂,時(shí)間復(fù)雜度 O(n)狱意,空間復(fù)雜度 O(n)

// 考慮到多個(gè)字母出現(xiàn)次數(shù)相同的case湖苞,如:
calculateSum(['1a', '2b', '3c', '9a', '23b']);

// 該測(cè)試用例中 a 和 b 都出現(xiàn)兩次详囤,輸出了 a 前面的數(shù)字加和。
// 原因是:a先遍歷加和完成藏姐,根據(jù)條件 if (appearCount > maxCount) 會(huì)輸出a的結(jié)果

考慮將空間復(fù)雜度降為 O(1)隆箩?哪位大俠寫出來給留個(gè)言吧羔杨,我實(shí)現(xiàn)不了了??

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市问畅,隨后出現(xiàn)的幾起案子娃属,更是在濱河造成了極大的恐慌护姆,老刑警劉巖矾端,帶你破解...
    沈念sama閱讀 222,681評(píng)論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件卵皂,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡灯变,警方通過查閱死者的電腦和手機(jī)殴玛,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,205評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門添祸,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人刃泌,你說我怎么就攤上這事凡壤。” “怎么了亚侠?”我有些...
    開封第一講書人閱讀 169,421評(píng)論 0 362
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)硝烂。 經(jīng)常有香客問我,道長(zhǎng)滞谢,這世上最難降的妖魔是什么究孕? 我笑而不...
    開封第一講書人閱讀 60,114評(píng)論 1 300
  • 正文 為了忘掉前任爹凹,我火速辦了婚禮厨诸,結(jié)果婚禮上禾酱,老公的妹妹穿的比我還像新娘微酬。我一直安慰自己颤陶,他們只是感情好颗管,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,116評(píng)論 6 398
  • 文/花漫 我一把揭開白布滓走。 她就那樣靜靜地躺著,像睡著了一般搅方。 火紅的嫁衣襯著肌膚如雪比吭。 梳的紋絲不亂的頭發(fā)上姨涡,一...
    開封第一講書人閱讀 52,713評(píng)論 1 312
  • 那天,我揣著相機(jī)與錄音涛漂,去河邊找鬼赏表。 笑死匈仗,一個(gè)胖子當(dāng)著我的面吹牛瓢剿,可吹牛的內(nèi)容都是我干的悠轩。 我是一名探鬼主播间狂,決...
    沈念sama閱讀 41,170評(píng)論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼哗蜈,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼前标!你這毒婦竟也來了距潘?” 一聲冷哼從身側(cè)響起炼列,我...
    開封第一講書人閱讀 40,116評(píng)論 0 277
  • 序言:老撾萬榮一對(duì)情侶失蹤音比,失蹤者是張志新(化名)和其女友劉穎俭尖,沒想到半個(gè)月后洞翩,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體稽犁,經(jīng)...
    沈念sama閱讀 46,651評(píng)論 1 320
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡骚亿,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,714評(píng)論 3 342
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了来屠。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片虑椎。...
    茶點(diǎn)故事閱讀 40,865評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡俱笛,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出迎膜,到底是詐尸還是另有隱情泥技,我是刑警寧澤磕仅,帶...
    沈念sama閱讀 36,527評(píng)論 5 351
  • 正文 年R本政府宣布珊豹,位于F島的核電站榕订,受9級(jí)特大地震影響平夜,放射性物質(zhì)發(fā)生泄漏卸亮。R本人自食惡果不足惜忽妒,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,211評(píng)論 3 336
  • 文/蒙蒙 一兼贸、第九天 我趴在偏房一處隱蔽的房頂上張望段直。 院中可真熱鬧溶诞,春花似錦鸯檬、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,699評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽功茴。三九已至庐冯,卻和暖如春坎穿,著一層夾襖步出監(jiān)牢的瞬間展父,已是汗流浹背玲昧。 一陣腳步聲響...
    開封第一講書人閱讀 33,814評(píng)論 1 274
  • 我被黑心中介騙來泰國打工栖茉, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留孵延,地道東北人吕漂。 一個(gè)月前我還...
    沈念sama閱讀 49,299評(píng)論 3 379
  • 正文 我出身青樓尘应,卻偏偏與公主長(zhǎng)得像痰娱,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子梨睁,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,870評(píng)論 2 361

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

  • Java中二維數(shù)組array.length和array[i].length的區(qū)別及實(shí)例Java中二維數(shù)組array...
    夏日檸檬哈閱讀 38評(píng)論 0 0
  • #數(shù)據(jù)結(jié)構(gòu)之動(dòng)態(tài)數(shù)組的創(chuàng)建 ##關(guān)于二維數(shù)組與一位數(shù)組的互相轉(zhuǎn)換 ①如1 2 3 4 5 6 7 8 9 10這一...
    王登登閱讀 31評(píng)論 0 0
  • 面對(duì)疫情娜饵,我們?cè)撊绾瓮旎毓镜慕?jīng)濟(jì) 龍觀集團(tuán)是一家集產(chǎn)業(yè)園區(qū)運(yùn)營(yíng)坡贺、眾籌眾創(chuàng)服務(wù)箱舞、高校專業(yè)共建遍坟、風(fēng)險(xiǎn)投資晴股、財(cái)務(wù)管理...
    XH123456FLY閱讀 195評(píng)論 0 1
  • if else 嵌套優(yōu)化 各個(gè)分支控制下的代碼如下: 優(yōu)化后 RuleMap是所有判斷規(guī)則和其執(zhí)行方法的合集愿伴,Ru...
    橙汁坤閱讀 800評(píng)論 0 0
  • 一條路 貫穿生命始末 一條路 越過春夏秋冬 這條路 不是山路 卻曲折無比 不是水路 卻飄渺無垠 不是天路 能直達(dá)浩...
    澎湃簡(jiǎn)報(bào)閱讀 260評(píng)論 0 4