随笔分类 -  算法

摘要:思路 Dijkstra算法的基本思想是贪心策略,即每次选择当前未访问的顶点中距离源点最近的顶点(我们假设该点为X点),这样就保证获得了源点(就是需要求解的点)到X点最近的路径,并将其标记为已访问,然后更新该顶点邻接顶点的距离估计值。算法通过不断迭代,逐步扩展到图中所有顶点,直到所有顶点都被访问为止‌ 阅读全文
posted @ 2025-04-02 18:34 搁浅~浅浅浅 阅读(80) 评论(0) 推荐(0)
摘要:实现循环顺序交替打印123 方法一、 package main import ( "fmt" "sync" ) func main() { var wg sync.WaitGroup a := make(chan int, 1) b := make(chan int, 1) c := make(ch 阅读全文
posted @ 2025-03-11 19:31 搁浅~浅浅浅 阅读(56) 评论(0) 推荐(0)
摘要:方法1:迭代法(推荐) 时间复杂度 O(n),空间复杂度 O(1) 实现步骤: 定义三个指针:prev(前驱节点)、current(当前节点)、next(后继节点)。 遍历链表,逐个反转节点的指向。 最终 prev 成为新链表的头节点。 迭代法通过遍历原始链表,逐个将节点的指针指向其前一个节点,从而 阅读全文
posted @ 2025-03-04 21:34 搁浅~浅浅浅 阅读(76) 评论(0) 推荐(0)
摘要:在 Go 语言中实现数组(或切片)反转可以通过以下方法完成。以下是两种常用方式:原地反转(直接修改原切片)和返回新切片(保留原切片不变)。根据需求选择实现方式。 方法一:原地反转(直接修改原切片) 针对特定类型的实现(如 int) package main import "fmt" // 反转 in 阅读全文
posted @ 2025-03-04 17:46 搁浅~浅浅浅 阅读(245) 评论(0) 推荐(0)