队列和广度优先搜索

队列 是一种先入先出(First In First Out , FIFO)的数据结构,其原理和现实生活中的队列完全相同。

广度优先搜索 (BFS) 能够让你找到两样东西间的最短距离。比如你需要从A地到B地,你使用地图进行搜索坐车路线,地图会默认给你一个最短路径在最前面。同时也会给你每个路线。

基础概念:

: 模拟一组链接,比如从A到B

 散列表:使用散列函数和数组创建的;(我觉得那里不太对)

散列表冲突:两个键映射到了同一个位置; 解决方式:在这个位置存储一个链表

散列函数:将输入映射到数字

  • 同样的输入映射到相同的索引
  • 不同的输入映射到不同的索引
  • 只返回有效的索引

BFS处理节点的顺序: 创建一个队列,用于存储要检查的节点,将图的头节点开始放入队列 -> 将该节点的邻居节点放入队列中,弹出队列头节点。检查弹出节点是否是终点 ,否继续重复操作,是的话结束操作。

有个岛屿数量的题目

  1. 先设置一个变量记录1的数量;
  2. 递归查找上下左右将1变为0
/**
 * @param {character[][]} grid
 * @return {number}
 */
var numIslands = function(grid) {
    var count = 0;
    for (let i = 0; i< grid.length; i++) {
        for(let j=0; j<grid[0].length; j++) {
            if(grid[i][j] === "1") {
                changeTurn(i,j,grid)
                count++
            }
        }
    }
    return count;
};

var changeTurn = function (i,j,grid) {
    if(i<0 || j<0 || i>=grid.length|| j>=grid[0].length ||grid[i][j] === 0) return;
    grid[i][j] = 0
    changeTurn(i-1,j,grid)
    changeTurn(i,j -1 ,grid)
    changeTurn(i,j +1 ,grid)
    changeTurn(i+1,j,grid)
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值