2697. 字典序最小回文串
2697. 字典序最小回文串
from collections import deque
class Solution:
def makeSmallestPalindrome(self, s: str) -> str:
q = deque()
if len(s) % 2 == 0:
p0 = len(s) // 2 - 1
p1 = len(s) // 2
else:
q.append(s[len(s) // 2])
p0 = len(s) // 2 - 1
p1 = len(s) // 2 + 1
while p0 >= 0:
if s[p0] <= s[p1]:
q.append(s[p0])
q.appendleft(s[p0])
else:
q.append(s[p1])
q.appendleft(s[p1])
p0 -= 1
p1 += 1
return ''.join(q)
775. 全局倒置与局部倒置
775. 全局倒置与局部倒置
class Solution:
def isIdealPermutation(self, nums: List[int]) -> bool:
min_num = 0
i = 0
while i < len(nums):
if nums[i] == min_num:
min_num += 1
i += 1
continue
elif nums[i] == min_num + 1:
if nums[i + 1] == min_num:
i += 2
min_num += 2
continue
else:
return False
else:
return False
return True
1791. 找出星型图的中心节点
1791. 找出星型图的中心节点
from collections import defaultdict
class Solution:
def findCenter(self, edges: List[List[int]]) -> int:
n = len(edges)
d = defaultdict(int)
for i in range(n):
d[edges[i][0]] += 1
d[edges[i][1]] += 1
if d[edges[i][0]] >= 2:
return edges[i][0]
if d[edges[i][1]] >= 2:
return edges[i][1]
面试题 02.01. 移除重复节点
面试题 02.01. 移除重复节点
class Solution:
def removeDuplicateNodes(self, head: ListNode) -> ListNode:
if not head:
return None
vals = set()
p = head
vals.add(p.val)
while p.next:
if p.next.val not in vals:
vals.add(p.next.val)
p = p.next
continue
p.next = p.next.next
return head
455. 分发饼干
455. 分发饼干
class Solution:
def findContentChildren(self, g: List[int], s: List[int]) -> int:
g.sort()
s.sort()
ans = 0
while g and s:
g_val = g.pop()
s_val = s.pop()
if s_val >= g_val:
ans += 1
continue
else:
while g:
g_val = g.pop()
if s_val >= g_val:
ans += 1
break
return ans
Comments | NOTHING