赞
踩
特别提醒,订阅专栏前一定要看好题解语言哦~
华为 OD 机试题(A&B 卷)真题抽中记录文档(更新到 10 月 17 日)
第一步:投递简历
提供姓名、邮箱、手机号、身份证号,用于锁定,所以投递前需要考虑清楚,投到项目组之后,一般不会转给另一个项目的 HR 了,也就是被锁定。
第二步:机试
3 道算法题,400 分满分,一般 1 个月的准备时间,华为机试必须要 300 分以上,没有过半年之后才能参加下一次考试。
第三步:技术面
2 轮技术面试。
第四步:HR 与主管面试
第五步:录用,发 offer
注意手撕代码题目,不提供 100%通过题解,仅提供示例代码,供大家学习使用~
场景描述: 你有一个矩形地板,和一些不同大小的正方形瓷砖。你需要找到一种方法,用这些瓷砖完全覆盖地板,而且不能有重叠或者破碎的瓷砖。
规则: 给定矩形地板的尺寸和一组瓷砖的尺寸,找到一种方法,以确保地板上每个位置都被覆盖。
输入: 地板的尺寸和瓷砖的尺寸列表。
输出: 返回是否可以完全覆盖地板,以及覆盖的方式。
示例代码:
def canTileFloor(floor_width, floor_length, tile_sizes): def backtrack(width, length, tiles): if width == 0 and length == 0: return True if width < 0 or length < 0 or not tiles: return False for i in range(len(tiles)): tile = tiles[i] if backtrack(width - tile, length, tiles[:i] + tiles[i+1:]) or \ backtrack(width, length - tile, tiles[:i] + tiles[i+1:]): return True return False result = backtrack(floor_width, floor_length, tile_sizes) return result # 示例用法 floor_width = 5 floor_length = 3 tile_sizes = [2, 1, 3] result = canTileFloor(floor_width, floor_length, tile_sizes) if result: print("可以完全覆盖地板") else: print("无法完全覆盖地板")
场景描述: 你是一名围棋玩家,需要确定在一个围棋棋盘上,哪些棋子是被完全包围住的,即不再有出路。
规则: 围棋规则是如果一组相邻的棋子被另一组颜色相同的棋子包围,那么它们就被吃掉。你需要实现一个算法,以确定哪些棋子是被完全包围住的。
输入: 围棋棋盘,其中 1 表示白子,-1 表示黑子,0 表示空格。
输出: 返回被完全包围的棋子的位置。
示例代码:
def surrounded_regions(board): if not board: return [] rows, cols = len(board), len(board[0]) def dfs(i, j): if i < 0 or i >= rows or j < 0 or j >= cols or board[i][j] != 'O': return board[i][j] = 'T' dfs(i+1, j) dfs(i-1, j) dfs(i, j+1) dfs(i, j-1) for i in range(rows): for j in range(cols): if (i == 0 or i == rows - 1 or j == 0 or j == cols - 1) and board[i][j] == 'O': dfs(i, j) for i in range(rows): for j in range(cols): if board[i][j] == 'O': board[i][j] = 'X' elif board[i][j] == 'T': board[i][j] = 'O' # 示例用法 board = [ ['X', 'X', 'X', 'X'], ['X', 'O', 'O', 'X'], ['X', 'X', 'O', 'X'], ['X', 'O', 'X', 'X'] ] surrounded_regions(board) for row in board: print(row)
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。