编写一个算法来判断一个数 n 是不是快乐数。
「快乐数」 定义为:
对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和。
然后重复这个过程直到这个数变为 1,也可能是 无限循环 但始终变不到 1。
如果这个过程 结果为 1,那么这个数就是快乐数。
如果 n 是 快乐数 就返回 true ;不是,则返回 false 。
示例 1:
输入:n = 19
输出:true
解释:
12 + 92 = 82
82 + 22 = 68
62 + 82 = 100
12 + 02 + 02 = 1
示例 2:
输入:n = 2
输出:false
来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/happy-number
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
方法:快慢指针
class Solution:
def isHappy(self, n: int) -> bool:
def get_next(n):
sum=0
while(n):
n,dight=divmod(n,10)
sum+=dight**2
return sum
low=n
fast=get_next(n)
while(fast!=1 and low!=fast):
low=get_next(low)
fast=get_next(get_next(fast))
return fast==1
给你一个链表的头节点 head 和一个整数 val ,请你删除链表中所有满足 Node.val == val 的节点,并返回 新的头节点 。
示例 1:
输入:head = [1,2,6,3,4,5,6], val = 6
输出:[1,2,3,4,5]
示例 2:
输入:head = [], val = 1
输出:[]
示例 3:
输入:head = [7,7,7,7], val = 7
输出:[]
来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/remove-linked-list-elements
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
class Solution:
def removeElements(self, head: Optional[ListNode], val: int) -> Optional[ListNode]:
while(head and head.val==val):
head=head.next
if not head:
return head
ans=head
while(ans.next):
if ans.next.val==val:
ans.next=ans.next.next
else:
ans=ans.next
return head
给定两个字符串 s 和 t ,判断它们是否是同构的。
如果 s 中的字符可以按某种映射关系替换得到 t ,那么这两个字符串是同构的。
每个出现的字符都应当映射到另一个字符,同时不改变字符的顺序。不同字符不能映射到同一个字符上,相同字符只能映射到同一个字符上,字符可以映射到自己本身。
示例 1:
输入:s = “egg”, t = “add”
输出:true
示例 2:
输入:s = “foo”, t = “bar”
输出:false
示例 3:
输入:s = “paper”, t = “title”
输出:true
来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/isomorphic-strings
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
class Solution:
def isIsomorphic(self, s: str, t: str) -> bool:
if len(s)!=len(t):
return False
hash_dict1={}
hash_dict2={}
for i in range(len(s)):
if s[i] not in hash_dict1:
hash_dict1[s[i]]=t[i]
else:
if hash_dict1[s[i]]!=t[i]:
return False
for i in range(len(t)):
if t[i] not in hash_dict2:
hash_dict2[t[i]]=s[i]
else:
if hash_dict2[t[i]]!=s[i]:
return False
return True
class Solution:
def isIsomorphic(self, s: str, t: str) -> bool:
return len(set(s)) == len(set(t)) and len(set(s)) == len(set(zip(s, t)))