这道题,如果从解决问题的角度来说,用python的话,我个人觉得还是比较简单的。因为python丰富的内置函数能很轻易的解决问题。 但是时间复杂度就不能保证,如果保证时间复杂度,还是要使用map,也就是字典。
class Solution:
def isAnagram(self, s: str, t: str) -> bool:
number = "abcdefghijklmnopqrstuvwxyz"
for i in number:
if s.count(i) != t.count(i):
return False
return True
class Solution:
def isAnagram(self, s: str, t: str) -> bool:
if len(s) != len(t):
return False
number = "abcdefghijklmnopqrstuvwxyz"
sdict = {}
for i in number:
sdict[i] = 0
for i in s:
sdict[i] += 1
for i in t:
sdict[i] -= 1
for i in number:
if sdict[i] != 0:
return False
return True
这道题,我的第一反应就是使用set。然后,求交集就行了。
class Solution:
def intersection(self, nums1: List[int], nums2: List[int]) -> List[int]:
a = set(nums1)
b = set(nums2)
c = set.intersection(a,b)
c = list(c)
return c
这道题我之前遇到过,当时就没有写出来,今天又遇到了,鉴于之前没有想出来,今天又看了一会,就没看了。直接看了题解。看了后才恍然大悟。今天算是第二次遇到这种情况了,现在还是想再说一下。leetcode刷题,里面常常会标注重点内容,也就是加粗字体。这些字体往往就是解题的关键。
然后就是再说说这道题,如果想求出快乐数,关键在于无限循环这四个字上,如果无限循环了,然后循环里面还有没有1,就说明这个数必不是快乐数。如果有1,就说明是快乐数。
class Solution:
def isHappy(self, n: int) -> bool:
numsdict = {}
while n != 1:
n = self.calculate(n)
if n not in numsdict:
numsdict[n] = 0
else:
numsdict[n] += 1
if numsdict[n] >= 2:
return False
return True
def calculate(self, n: int):
n = str(n)
sum = 0
for i in n:
sum += int(i) ** 2
return sum
两数之和作为力扣里面的第一题,大家应该都写过。这道题主要是两种解法。一种是用暴力解法,双重for循环嘛,时间复杂度就是O(n).
另外一种就是使用哈希表。使用哈希表查询的时间就是O(1)
class Solution:
def twoSum(self, nums: List[int], target: int) -> List[int]:
for i in range(len(nums)):
a = target - nums[i]
for j in range(len(nums)):
if i != j:
if a == nums[j]:
return [i,j]
class Solution:
def twoSum(self, nums: List[int], target: int) -> List[int]:
hashtable = dict()
for i, num in enumerate(nums):
if target - num in hashtable:
return [hashtable[target - num], i]
hashtable[nums[i]] = i
return []
我现在差不多慢了一天的进度吧,现在天天都好累。然后也不想写了。代码随想录,坚持一周了。
还剩下7周,加油。