657. Робот возвращается в исходное положение
class Solution: def judgeCircle(self, moves: str) -> bool: end_position = [0, 0] move_dict = { 'L': [0, -1], 'R': [0, 1], 'U': [1, 0], 'D': [-1, 0] } for d in moves: end_position = [end_position[0] + move_dict[d][0], end_position[1] + move_dict[d][1]] if end_position == [0, 0]: return True else: return False
905. Сортировать массив по четности
def sortArrayByParity(self, A): """ :type A: List[int] :rtype: List[int] """ i = 0 j = len(A) - 1 while i < j: if A[i] % 2 == 0 and A[j] % 2 == 1: i += 1 j -= 1 elif A[i] % 2 == 1 and A[j] % 2 == 0: temp = A[j] A[j] = A[i] A[i] = temp i += 1 j -= 1 elif A[i] % 2 == 0 and A[j] % 2 == 0: i += 1 elif A[i] % 2 == 1 and A[j] % 2 == 1: j -= 1 return A
942. Совпадение строки DI
# Хитрый # НЕ куча
def diStringMatch(self, S): """ :type S: str :rtype: List[int] """ lo, hi = 0, len(S) ans = [] for x in S: if x == "I": ans.append(lo) lo += 1 if x == "D": ans.append(hi) hi -= 1 ans.append(hi) return ans
944. Удалить столбцы для сортировки
# Жадный, проверьте, отсортирован ли столбец, иначе добавьте в возвращаемый список, верните длину несортированного списка столбцов
def minDeletionSize(self, A): """ :type A: List[str] :rtype: int """ ans = [] rows = len(A) columns = len(A[0]) for y in range(columns): column_values = [] isSorted = True for x in range(rows): if len(column_values) and A[x][y] < column_values[-1]: isSorted = False break column_values.append(A[x][y]) if isSorted == False: ans.append(y) return len(ans)
54. Спиральная матрица
# Код Фааду # Горжусь собой :P # Хитрость в том, чтобы писать очень СУХОЙ код!
def spiralOrder(self, matrix): """ :type matrix: List[List[int]] :rtype: List[int] """ if not matrix: return [] dx = 0 dy = 1 xlimit = [0, len(matrix)] ylimit = [0, len(matrix[0])] current_loc = (0, 0) current_value = 1 max_value = xlimit[1] * ylimit[1] output_array = [] while current_value < max_value: while current_loc[0] in range(xlimit[0], xlimit[1]) and current_loc[1] in range(ylimit[0], ylimit[1]): output_array.append(matrix[current_loc[0]][current_loc[1]]) current_value += 1 current_loc = (current_loc[0] + dx, current_loc[1] + dy) if dy: if dy < 0: xlimit[1] -= 1 else: xlimit[0] += 1 current_loc = (current_loc[0] + dx, current_loc[1] + -1 * dy) dx = dy dy = 0 else: if dx > 0: ylimit[1] -= 1 else: ylimit[0] += 1 current_loc = (current_loc[0] + -1 * dx, current_loc[1] + dy) dy = -dx dx = 0 current_loc = (current_loc[0] + dx, current_loc[1] + dy) try: if matrix[current_loc[0]][current_loc[1]] not in output_array: output_array.append(matrix[current_loc[0]][current_loc[1]]) except: pass return output_array