avatar
文章
343
标签
46
分类
25
首页
文章
  • 归档
  • 分类
  • 标签
  • 说说
摄影集
友链
留言板
关于我
DeepThinking深思
搜索
首页
文章
  • 归档
  • 分类
  • 标签
  • 说说
摄影集
友链
留言板
关于我

DeepThinking深思

leetcode 双指针
发表于2024-03-23|算法LeetCode|
1234567891011121314// 删除有序数组中的重复元素func removeDuplicates(nums []int) int { slow:=0 for fast:=1;fast <len(nums);fast++ { if nums[fast] != nums[slow] { slow++// 跳到下个位置,保存slow nums[slow] = nums[fast] } } return slow +1} slow是指向当前已经处理好的序列的尾部,右指针指向待处理序列的头部。右指针不断向右移动,每次右指针指向非零数,则将左右指针对应的数交换,同时左指针右移。 注意到以下性质: 左指针左边均为非零数; 右指针左边直到左指针处均为零。因此每次交换,都是将slow指针的零与fast指针的非零数交换,且非零数的相对顺序并未改变。 12345678910func...
leetcode 单调栈
发表于2024-02-24|算法LeetCode|
单调栈用途不太广泛,只处理一类典型的问题,比如「下一个更大元素」,「上一个更小元素」 输入一个数组 nums,请你返回一个等长的结果数组,结果数组中对应索引存储着下一个更大元素,如果没有更大的元素,就存 -1 1234567891011121314151617181920212223func nextGreaterElement(nums []int) []int { n := len(nums) // 存放答案的数组 res := make([]int, n) // 倒着往栈里放 s := make([]int, 0) for i := n - 1; i >= 0; i-- { // 倒着入栈是为了后边正着出栈 // 判定个子高矮 for len(s) > 0 && s[len(s)-1] <= nums[i] { // 矮个起开,反正也被挡着了。。。 s = s[:len(s)-1] ...
golang 修改函数传入参数切片需要指针
发表于2024-02-24|编程语言Golang|
func dfs(root *TreeNode, res *[]int) { if root == nil { return } *res = append(*res, root.Val) dfs(root.Left, res) dfs(root.Right, res) }在这个修正后的版本中,res参数是一个指向切片的指针。这样,我们在函数内部通过*res来访问和修改原始切片的内容,确保递归调用可以正确地将结果收集到原始切片中。 在 Go 语言中,切片是引用类型。这意味着当你将切片传递给函数时,你实际上传递的是切片的引用(底层数组的地址),而不是切片的副本。因此,对切片的修改会影响到原始切片。 但是需要注意的是,虽然切片是引用类型,但当你在函数内部对切片进行重新分配(比如使用 append 函数时),你实际上是创建了一个新的切片,而原始切片并没有被修改。这是因为切片是对底层数组的一个视图,对切片的修改可能会导致底层数组的重新分配和复制。 这就是为什么在你的原始 DFS 函数中,尽管你传递了切片 res...
路由器设置桥接
发表于2024-02-15|技术栈网络|
设置密码类型和主路由一样 记得关闭DHCP服务器
leetcode 406. 根据身高重建队列【贪心】
发表于2024-01-24|算法LeetCode|
406. 根据身高重建队列 - 力扣(LeetCode) 12345678910111213141516func reconstructQueue(people [][]int) [][]int { sort.Slice(people, func(i, j int) bool { if people[i][0] == people[j][0]{ return people[i][1] < people[j][1] } return people[i][0] > people[j][0] // 身高由大到小排列 })i // 再按照K进行插入排序,优先插入K小的 for i, p := range people { copy(people[p[1]+1 :i+1], people[p[1] :i+1]) // 腾空出一个位置 people[p[1]] = pi } return people} sort.Slice(people, func(i, j...
leetcode 77.组合【回溯】
发表于2024-01-23|算法LeetCode|
77. 组合 - 力扣(LeetCode) 使用回溯的模板 123456789101112void backtracking(参数) { if (终止条件) { 存放结果; return; } for (选择:本层集合中元素(树中节点孩子的数量就是集合的大小)) { 处理节点; backtracking(路径,选择列表); // 递归 回溯,撤销处理结果 }} 12345678910111213141516171819202122232425func combine(n int, k int) [][]int { res := [][]int{} path := []int{} // 结束条件 var backtracking func(n, k ,startIdx int) backtracking = func(n, k ,startIdx int) { ...
【BFS DFS通用模板】
发表于2024-01-23|算法LeetCode|
深度优先搜索(DFS)通用模板123456789101112131415161718192021222324252627282930313233343536// 通用的深度优先搜索函数func dfs(node int, visited []bool, graph [][]int) { // 边界终止条件 if m n { } // 终止条件 if visited[node] { return } // 处理当前节点 // ... // 标记当前节点为已访问 visited[node] = true // 递归处理相邻节点 for _, neighbor := range graph[node] { dfs(neighbor, visited, graph) }}// 在主函数中调用func main() { // 初始化节点、访问数组等 // ... // 遍历所有节点 ...
leetcode 94.二叉树的中序遍历
发表于2024-01-22|算法LeetCode|
递归方法123456789101112131415func inorderTraversal(root *TreeNode) (res []int) { var traversal func(node *TreeNode) traversal = func(node *TreeNode) { if node == nil { return } traversal(node.Left) res = append(res,node.Val) traversal(node.Right) } traversal(root) return res} 非递归方法1234567891011121314151617181920212223func inorderTraversal(root *TreeNode) []int { ans := []int{} if root == nil { return ans ...
【go】初始化双向列表List
发表于2024-01-22|算法LeetCode|
在Go语言中,两种方法都可以用于初始化一个list.List。 queue := &list.List{}: 这是使用结构体字面量的方式,创建一个 list.List 类型的结构体变量,并返回该结构体的指针。这种方式创建了一个空的链表。 queue := list.New(): 这是使用 list 包中的 New 函数来创建一个新的 list.List。New 函数返回一个指向新创建的 list.List 实例的指针。同样,这种方式也创建了一个空的链表。 两种方式都是有效的
【20240114】LeetCode 83. 删除排序链表中的重复元素
发表于2024-01-14|算法LeetCode|
Problem: 83. 删除排序链表中的重复元素 [TOC] 思路 遍历 解题方法 描述你的解题方法 复杂度时间复杂度: 添加时间复杂度, 示例: $O(n)$ 空间复杂度: 添加空间复杂度, 示例: $O(n)$ Code[]123456789101112131415161718192021222324252627282930313233343536373839/** * Definition for singly-linked list. * type ListNode struct { * Val int * Next *ListNode * } */func deleteDuplicates(head *ListNode) *ListNode { for i := head; i != nil && i.Next != nil ; { if i.Next.Val == i.Val { i.Next = i.Next.Next //...
1…262728…35
avatar
Lei Qi
记录、总结、复盘、分享
文章
343
标签
46
分类
25
Follow Me
公告

欢迎关注公众号:DeepThinking深思,本站的文章会同步发布在微信公众号,方便推送~

最新文章
【Github Trending 日报】深度解析 - 2026/09/152026-09-15
【Github Trending 日报】深度解析 - 2026/09/142026-09-14
【Github Trending 日报】深度解析 - 2026/09/132026-09-13
【Github Trending 日报】深度解析 - 2026/09/122026-09-12
【Github Trending 日报】深度解析 - 2026/09/112026-09-11
分类
  • AI3
    • AI工具1
  • 工具1
  • 技术1
  • 技术栈19
    • DevOps1
    • Docker1
    • Git7
    • Linux5
    • 网络4
    • 自动化1
  • 架构设计3
    • 设计模式3
  • 算法77
    • LeetCode76
    • 速刷记录1
  • 综合206
    • 工具204
    • 比赛1
    • 科技1
  • 编程语言33
    • C++1
    • Golang27
    • Python3
    • 前端2
归档
  • 九月 2026 15
  • 八月 2026 33
  • 七月 2026 31
  • 六月 2026 30
  • 五月 2026 30
  • 四月 2026 27
  • 三月 2026 20
  • 二月 2026 1
网站信息
文章数目 :
343
本站访客数 :
本站总浏览 :
最后更新时间 :
Copyright © 2022-Lei Qi | leiqi.top
搜索
数据加载中