摘要:字母區分大小寫,因此和是不同類型的石頭。輸入輸出暴力解法將寶石中的每個元素在石頭中的數量相加的時間復雜度為石頭中的每個元素此元素在寶石中則官方解法哈希表將搜索的時間復雜度變為
本文章基于Datewhale第30期組隊學習
2021.11.15
# 1 兩數之和# 給定一個整數數組 nums 和一個整數目標值 target,# 請你在該數組中找出和為目標值 target 的那兩個整數,并返回它們的數組下標。# 你可以假設每種輸入只會對應一個答案。但是,數組中同一個元素在答案里不能重復出現
# 1.兩層 for 循環 暴解 O(n^2)class Solution: def twoSum(self, nums: List[int], target: int) -> List[int]: length = len(nums) for i in range(length): for j in range(i+1, length): # 從i+1 開始查找,因為i+1 之前的已經查找匹配過了 if nums[i] + nums[j] == target: return [i, j]# 時間太長了(大概2800左右) 嘗試O(n)的方法# 2. 哈希表 O(n)class Solution: def twoSum(self, nums: List[int], target: int) -> List[int]: mp = {} for i in range(len(nums)): mp[nums[i]] = i # 因為每種輸入只對應一個答案,所以只存儲最后一個 值 的下標 for i in range(len(nums)): if target - nums[i] in mp.keys() and mp[target - nums[i]] != i: # 防止返回兩次自身的下標 return [i, mp[target - nums[i]]]
# 1929. 數組串聯# 給你一個長度為 n 的整數數組 nums 。請你構建一個長度為 2n 的答案數組 ans ,# 數組下標 從 0 開始計數 ,對于所有 0 <= i < n 的 i ,滿足下述所有要求:# ans[i] == nums[i]# ans[i + n] == nums[i]# 具體而言,ans 由兩個 nums 數組 串聯 形成。
"""例:輸入:nums = [1,2,1] 輸出:[1,2,1,1,2,1] 解釋:數組 ans 按下述方式形成: - ans = [nums[0],nums[1],nums[2],nums[0],nums[1],nums[2]] - ans = [1,2,1,1,2,1]"""# 如題所述class Solution: def getConcatenation(self, nums: List[int]) -> List[int]: length = len(nums) ans = [0] * 2 * length length = len(nums) for i in range(length): ans[i] = nums[i] ans[i + length ] = nums[i] return ans# 但實際上只需要將 nums * 2 或者 用 extend 即可class Solution: def getConcatenation(self, nums: List[int]) -> List[int]: # return nums * 2 # return nums + nums nums.extend(nums) return nums
# 771. 寶石與石頭# 給你一個字符串 jewels 代表石頭中寶石的類型,另有一個字符串 stones 代表你擁有的石頭。# stones 中每個字符代表了一種你擁有的石頭的類型,你想知道你擁有的石頭中有多少是寶石。# 字母區分大小寫,因此 "a" 和 "A" 是不同類型的石頭。
""""輸入:jewels = "aA", stones = "aAAbbbb"輸出:3"""# 暴力解法 O(mn)class Solution: def numJewelsInStones(self, jewels: str, stones: str) -> int: # return sum(stones.count(i) for i in jewels) # 將 寶石中 的每個元素在 石頭中的數量相加 num = 0 # string.count的時間復雜度為 O(n) for i in stones: # 石頭中的每個元素 if i in jewels: # 此元素在 寶石 中 則 num++ num += 1 return num# O(m+n) 官方解法class Solution: def numJewelsInStones(self, jewels: str, stones: str) -> int: jewelsSet = set(jewels) # 哈希表 將搜索的時間復雜度變為O(1) return sum(s in jewelsSet for s in stones)
?
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/123495.html
摘要:正式地講,提莫在發起發起攻擊意味著艾希在時間區間含和處于中毒狀態。示例輸入輸出解釋提莫攻擊對艾希的影響如下第秒,提莫攻擊艾希并使其立即中毒。第秒,提莫再次攻擊艾希,艾希中毒狀態又持續秒,即第秒和第秒。 ...
摘要:每天會折騰一道及以上題目,并將其解題思路記錄成文章,發布到和微信公眾號上。三匯總返回目錄在月日月日這半個月中,做了匯總了數組知識點。或者拉到本文最下面,添加的微信等會根據題解以及留言內容,進行補充,并添加上提供題解的小伙伴的昵稱和地址。 LeetCode 匯總 - 2019/08/15 Create by jsliang on 2019-08-12 19:39:34 Recently...
前端LeetCode刷題 下面是已刷的題目的目錄。GitHub:https://github.com/cunzaizhuy...每日打卡更新中,歡迎關注。 數組類 26 刪除排序數組中的重復項 27 移除元素 35 搜索插入位置 66 加1 80 medium 刪除排序數組中的重復項2 88 合并兩個有序數組 167 兩數之和II - 輸入有序數組 118 楊輝三角 169 easy 求眾數 1...
??前面的話?? 大家好!這是Java基礎知識與數據結構博文的導航帖,收藏我!學習Java不迷路! ?博客主頁:未見花聞的博客主頁 ?歡迎關注?點贊?收藏??留言? ?本文由未見花聞原創,CSDN首發! ?首發時間:?2021年11月11日? ??堅持和努力一定能換來詩與遠方! ?參考書籍:?《Java核心技術卷1》,?《Java核心技術卷2》,?《Java編程思想》 ?參考在線編程網站:?牛...
閱讀 1805·2021-11-18 10:02
閱讀 3536·2021-11-16 11:45
閱讀 1800·2021-09-10 10:51
閱讀 2119·2019-08-30 15:43
閱讀 1388·2019-08-30 11:23
閱讀 1496·2019-08-29 11:07
閱讀 1901·2019-08-23 17:05
閱讀 1436·2019-08-23 16:14