程序员面试金典 - 面试题 17.05. 字母与数字(哈希map+思维转换)
生活随笔
收集整理的這篇文章主要介紹了
程序员面试金典 - 面试题 17.05. 字母与数字(哈希map+思维转换)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1. 題目
給定一個放有字符和數字的數組,找到最長的子數組,且包含的字符和數字的個數相同。
返回該子數組,若存在多個最長子數組,返回左端點最小的。若不存在這樣的數組,返回一個空數組。
示例 1: 輸入: ["A","1","B","C","D","2","3","4","E","5","F","G","6","7","H","I","J","K","L","M"] 輸出: ["A","1","B","C","D","2","3","4","E","5","F","G","6","7"]示例 2: 輸入: ["A","A"] 輸出: []提示: array.length <= 100000來源:力扣(LeetCode)
鏈接:https://leetcode-cn.com/problems/find-longest-subarray-lcci
著作權歸領扣網絡所有。商業轉載請聯系官方授權,非商業轉載請注明出處。
2. 解題
- 將字符設為 -1,數字設為 +1
- 在sum=0的位置可知 [0,i] 滿足字符與數字相等
- 出現其他和,第一次出現記錄其位置 map[sum] = i
- 后序出現sum,將其位置 i 與 map[sum] 做差求長度,更新最大長度
396 ms 75 MB
總結
以上是生活随笔為你收集整理的程序员面试金典 - 面试题 17.05. 字母与数字(哈希map+思维转换)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: LeetCode 404. 左叶子之和(
- 下一篇: EM(期望极大化)算法及其推广