网站排名易下拉刷词,廊坊网站建设招聘,网站开发专业前景,深圳西乡网站建设公司输入#xff1a;一个二维数组#xff0c;每个元素的值为0/1。 规则#xff1a;所有连在一起的1是一个岛屿#xff0c;数组中包含2个岛屿。连在一起是指上下左右4个方向。可以将0变为1#xff0c;将2个岛屿链接在一起。 输出#xff1a;最小改变多少个0就可以将2个岛屿链接…输入一个二维数组每个元素的值为0/1。 规则所有连在一起的1是一个岛屿数组中包含2个岛屿。连在一起是指上下左右4个方向。可以将0变为1将2个岛屿链接在一起。 输出最小改变多少个0就可以将2个岛屿链接在一起。 分析数组中只有2个岛屿。可以先遍历数组找到第一个值为1的坐标。DFS找到第一个岛屿。将第一个岛屿的所有坐标放入队列。作为BFS的起点坐标。沿着这些坐标向外扩展。看看最先找到值为1的坐标需要经过几层BFS遍历。无论是DFS还是BFS的遍历都要防止一个位置多次处理。 代码 分析2用另外尺寸相同的数组colors标识2块岛屿。然后将其中一个区域的坐标放入队列另外一个区域的坐标作为target。从队列中的坐标开始用bfs遍历直到遇到target中的坐标。这里学习的一个技巧是处理横纵坐标可以用一个整数代替。例如数组3行4列。第0行第0位数字0表示。第0行第1位用数字1表示…第1行第1位用数字5表示。如果用m表示行n表示列数值x表示第x/n行第x%n列。 代码