当前位置: 首页 > news >正文

Leetcode 刷题笔记1 图论part04

leetcode 110 字符串接龙

def judge(s1, s2):
    count = 0
    for i in range(len(s1)):
        if s1[i] != s2[i]:
            count += 1
    return count == 1

if __name__ == '__main__':
    n = int(input())
    begin_str, end_str = map(str, input().split())
    if begin_str == end_str:
        print(0)
        exit()
    strlist = []
    for _ in range(n):
        strlist.append(input())
    
    visited = [False for _ in range(n)]
    queue = [[begin_str, 1]]
    while queue:
        Str, step = queue.pop(0)
        if judge(Str, end_str):
            print(step + 1)
            exit()
        for i in range(n):
            if visited[i] == False and judge(strlist[i], Str):
                visited[i] = True
                queue.append([strlist[i], step + 1])
    print(0)

leetcode 105 有向图的完全联通

def dfs(grid, key, visited):
    for value in grid[key]:
        if not visited[value]:
            visited[value] = True
            dfs(grid, value, visited)

def main():
    import sys
    input = sys.stdin.read
    data = input().split()
    n = int(data[0])
    m = int(data[1])
    grid = [[] for _ in range(n + 1)]
    index = 2
    for _ in range(m):
        s = int(data[index])
        t = int(data[index + 1])
        grid[s].append(t)
        index += 2
    visited = [False] * (n + 1)
    visited[1] = True
    dfs(grid, 1, visited)
    for i in range(1, n + 1):
        if not visited[i]:
            print(-1)
            return
    print(1)

if __name__ == '__main__':
    main()

leetcode 106 岛屿的周长

def main():
    import sys
    input = sys.stdin.read
    data = input().split()
    n, m = int(data[0]),int(data[1])
    grid = []
    index = 2
    for _ in range(n):
        grid.append([int(data[index + j]) for j in range(m)])
        index += m
    sum_land= 0
    cover = 0
    for i in range(n):
        for j in range(m):
            if grid[i][j] == 1:
                sum_land += 1
                if i - 1 >= 0 and grid[i - 1][j] == 1:
                    cover += 1
                if j - 1 >= 0 and grid[i][j - 1] == 1:
                    cover += 1
    result = sum_land * 4 - cover * 2
    print(result)

if __name__ == '__main__':
    main()

相关文章:

  • [思考记录]两则:宏观视角、理想化
  • #echarts#折线图#饼图
  • @JsonSerialize注解
  • 机器臂运动控制算法工程师面试
  • LVGL常用功能备忘
  • STM32基础教程——定时器
  • 天梯赛 L2-013 红色警报
  • 2025海外华文新媒体高级人才研修班在广西南宁举办
  • Java实体类(Javabean)-编程规范
  • 自动学习和优化过程,实现更加精准的预测和决策的智慧交通开源了
  • 神聖的綫性代數速成例題13. 非齊次方程組解的性質、非齊次方程組解的討論
  • python:music21 构建 LSTM+GAN 模型生成爵士风格音乐
  • [笔记] TinyWebServer编译及demo运行过程
  • 什么是PHP伪协议
  • 详细解释计算机系统中的大小端
  • Unity摄像机基本操作详解:移动、旋转与缩放
  • qt实现一个简单http服务器和客户端
  • 前端(vue)学习笔记(CLASS 5):自定义指令插槽路由
  • 熔断降级(Sentinel解决)
  • 在OpenGL ES中将值传入shader的方法总结
  • 视频丨中国海警位中国黄岩岛领海及周边区域执法巡查
  • 魔都眼|静安光影派对五一启幕:苏河湾看徐悲鸿艺术画作
  • “铁血防守”制造8年最快丢球,恐惧中的阿森纳什么也做不了
  • 北京动物园:大熊猫“萌兰”没有参加日本大阪世博会的计划
  • 船只深夜撞上海上风机后沉没1死1失踪,调查报告公布
  • 人社部:就业政策储备充足,将会根据形势变化及时推出