T1 LC202 快乐数
class Solution:def isHappy(self, n: int) -> bool:left=sum([int(i)*int(i) for i in str(n)])right=sum([int(i)*int(i) for i in str(left)])if left==1 or right==1:return Truewhile left!=right:left=sum([int(i)*int(i) for i in str(left)])right=sum([int(i)*int(i) for i in str(right)])right=sum([int(i)*int(i) for i in str(right)])if right==1 or left==1:return Truereturn False
T2 LC92 反转列表
class Solution:def reverseBetween(self, head: ListNode, m: int, n: int) -> ListNode:# m对应节点是头结点,直接翻转if m == 1: return self.reverse(head, m, n)count = 1h = headwhile h: #找到m前一个节点preRevif count == m - 1:preRev = hh = h.nextcount += 1headRev = self.reverse(preRev.next, m, n)preRev.next = headRevreturn headdef reverse(self, head, m, n):'''该函数完成m-n的翻转以及翻转后与剩余链表相连两个任务'''pre, cur = None, head#翻转m-n链表for _ in range(n - m + 1):pre, pre.next, cur = cur, pre, cur.nexthead.next = cur #与剩余链表相连return pre
T3 LC51 N皇后
class Solution:def solveNQueens(self, n: int) -> List[List[str]]:def could_place(row, col):return not (cols[col] + hill_diagonals[row - col] + dale_diagonals[row + col])def place_queen(row, col):queens.add((row, col))cols[col] = 1hill_diagonals[row - col] = 1dale_diagonals[row + col] = 1def remove_queen(row, col):queens.remove((row, col))cols[col] = 0hill_diagonals[row - col] = 0dale_diagonals[row + col] = 0def add_solution():solution = []for _, col in sorted(queens):solution.append('.' * col + 'Q' + '.' * (n - col - 1))output.append(solution)def backtrack(row = 0):for col in range(n):if could_place(row, col):place_queen(row, col)if row + 1 == n:add_solution()else:backtrack(row + 1)remove_queen(row, col)cols = [0] * nhill_diagonals = [0] * (2 * n - 1)dale_diagonals = [0] * (2 * n - 1)queens = set()output = []backtrack()return output
今日学习总结
提交了学校CPP OJ的作业
