2025-06-27
技术
00
go
package main import "fmt" type ListNode struct { Val int Next *ListNode } func getIntersectionNode(headA, headB *ListNode) *ListNode { if headA == nil || headB == nil { return nil } // 计算链表长度 lenA := 0 lenB := 0 currA, currB := headA, headB for currA != nil { lenA++ currA = currA.Next } for currB != nil { lenB++ currB = currB.Next } // 对齐起点 currA, currB = headA, headB if lenA > lenB { for i := 0; i < lenA-lenB; i++ { currA = currA.Next } } else { for i := 0; i < lenB-lenA; i++ { currB = currB.Next } } // 同步遍历直到找到相交节点或遍历结束 for currA != nil && currB != nil { if currA == currB { return currA } currA = currA.Next currB = currB.Next } return nil } // 测试代码 func main() { // 构造链表A: 1 -> 2 -> 3 \ // 6 -> 7 // 4 -> 5 / // 链表B: 4 -> 5 / common := &ListNode{6, &ListNode{7, nil}} headA := &ListNode{1, &ListNode{2, &ListNode{3, common}}} headB := &ListNode{4, &ListNode{5, common}} intersection := getIntersectionNode(headA, headB) if intersection != nil { fmt.Printf("相交节点值: %d\n", intersection.Val) } else { fmt.Println("没有相交节点") } }
2025-06-27
技术
00

相关信息

算法学习

为什么学习算法

  • 算法是解决问题的核心能力
  • 提升思维能力(抽象、建模、逻辑推理)
  • 职场竞争力 & 面试必考
  • 写出高质量、高性能的程序
    • 写爬虫 → 如何快速去重(哈希 + 滑动窗口)
    • 日志分析 → 需要排序、聚合、图结构
    • 服务降级 → 用堆来快速取 topN
    • 实时推荐 → 使用布隆过滤器、Trie、倒排索引等算法结构
2025-06-26
技术
00

从代码变更开始到发版/上线,需要经历编译构建、不同类型的测试(准入/准出)、发布、上线部署/发版等一

2025-05-26
pyhton
00

背景

  • python项目中自定义的模块在python脚本执行的时候,出现提示module name加载不到的问题

解决办法

python
import sys import os BASE_DIR = os.path.abspath(os.path.join(os.path.dirname(__file__), "../..")) sys.path.append(BASE_DIR)

代码解释:将项目的根目录添加到Python的模块搜索路径中。这样做的目的是让Python能够在运行时找到我们项目中的模块。

  • 第一步就是获取当前文件所在的的根目录(当前目录的上两级目录)的绝对路径
  • 将绝对路径记载到python的搜索路径当中
2025-05-15
golang
00

golang基础学习

defer 的使用场景

场景描述
文件操作defer file.Close() 避免忘记关闭文件
锁操作defer mu.Unlock() 确保释放锁
数据库事务defer tx.Rollback()Commit()
捕获异常搭配 recover() 使用来捕获 panic