diff --git a/go_solutions/README.md b/go_solutions/README.md index ba2124c..06e18a1 100644 --- a/go_solutions/README.md +++ b/go_solutions/README.md @@ -1,22 +1,93 @@ -# go_solutions +# LeetCode Go刷题仓库 -这个文件夹里面的内容用于存放 go 语言相关的代码,是一个独立的文件夹 +此仓库包含了一些经典的 LeetCode 算法题目,按照题目类型分类,并使用 Go 语言实现。每个题目单独一个文件,按照难度和类型进行组织。以下是各个目录的功能和题型说明。 -## 目录 - -- [go_solutions] - - [目录](#目录) - - [介绍](#介绍) - - [目录结构](#目录结构) - -## 介绍 - -这个文件夹里面的所有内容都是 go 语言的算法实现。 +--- ## 目录结构 -- `sort/`: 排序算法相关目录 -- `leetcode/`: 力扣题解目录,按难度分类 - - `easy/`: 简单难度题目 - - `medium/`: 中等难度题目 - - `hard/`: 困难难度题目 +### `/array` - 数组相关题目 + +此目录包含与数组操作相关的题目,常见的操作包括查找、排序、求和、滑动窗口等。 + +- **easy_two_sum.go**:两数之和(简单) +- **medium_max_subarray.go**:最大子数组和(中等) + +### `/linkedlist` - 链表相关题目 + +此目录包含与链表操作相关的题目,涉及链表的遍历、反转、合并等操作。 + +- **easy_reverse_list.go**:反转链表(简单) + +### `/stack` - 栈相关题目 + +此目录包含与栈的应用相关的题目,栈是许多算法和数据结构中的基础,常用于括号匹配、单调栈等。 + +- **medium_valid_parentheses.go**:有效的括号(中等) +- **hard_maximal_rectangle.go**:最大矩形面积(困难) + +### `/dynamic_programming` - 动态规划相关题目 + +此目录包含与动态规划相关的题目,动态规划常用于求最优解问题,例如最长子序列、背包问题等。 + +- **medium_longest_subsequence.go**:最长递增子序列(中等) +- **hard_edit_distance.go**:编辑距离(困难) + +### `/graph` - 图相关题目 + +此目录包含与图的遍历和搜索相关的题目,常用的图算法包括深度优先搜索(DFS)、广度优先搜索(BFS)等。 + +- **medium_course_schedule.go**:课程表(中等) +- **hard_word_ladder.go**:单词接龙(困难) + +### `/tree` - 树相关题目 + +此目录包含与树结构相关的题目,常见的树操作包括遍历、求深度、平衡二叉树等。 + +- **easy_max_depth.go**:二叉树的最大深度(简单) +- **medium_level_order.go**:二叉树的层次遍历(中等) + +### `/string` - 字符串相关题目 + +此目录包含与字符串操作相关的题目,涉及字符串的匹配、变换、回文等问题。 + +- **easy_valid_palindrome.go**:回文字符串(简单) +- **hard_longest_substring_without_repeating.go**:无重复字符的最长子串(困难) + +### `/backtracking` - 回溯算法相关题目 + +此目录包含与回溯算法相关的题目,回溯算法常用于组合、排列、子集生成等问题。 + +- **medium_combination_sum.go**:组合总和(中等) +- **hard_n_queens.go**:N 皇后问题(困难) + +### `/greedy` - 贪心算法相关题目 + +此目录包含与贪心算法相关的题目,贪心算法用于找到问题的局部最优解,常用于最小化或最大化问题。 + +- **medium_jump_game.go**:跳跃游戏(中等) +- **hard_split_array_largest_sum.go**:分割数组的最大和(困难) + +### `/heap` - 堆相关题目 + +此目录包含与堆相关的题目,堆常用于求解最大/最小值、Top K 问题等。 + +- **medium_top_k_elements.go**:前 K 个高频元素(中等) + +--- + +## 使用说明 + +每个题目文件包含完整的解题代码和注释,直接运行文件可以查看解题过程和输出。你可以通过 `go run ` 命令来运行某个题目的代码进行调试和测试。 + +--- + +## 其他说明 + +- 本仓库主要用于刷 LeetCode 题目,所有题目都是独立的 Go 文件,便于快速学习和调试。 +- 每道题的解法根据 LeetCode 提供的题目描述进行编写,部分文件可能包含额外的注释帮助理解思路。 +- 有一些题目可能会在代码中做了优化或改进,特别是时间复杂度或空间复杂度方面。 + +--- + +希望这些题目能帮助你提升解题能力和编程技能!如果有任何问题或者建议,欢迎联系我。 diff --git a/go_solutions/go.mod b/go_solutions/go.mod deleted file mode 100644 index 13bea11..0000000 --- a/go_solutions/go.mod +++ /dev/null @@ -1,3 +0,0 @@ -module git.icoding.fun/yigencong/algorithm/go_solutions - -go 1.23.2 diff --git a/go_solutions/leetcode/esay/.gitkeep b/go_solutions/leetcode-go/array/.gitkeep similarity index 100% rename from go_solutions/leetcode/esay/.gitkeep rename to go_solutions/leetcode-go/array/.gitkeep diff --git a/go_solutions/leetcode/hard/.gitkeep b/go_solutions/leetcode-go/backtracking/.gitkeep similarity index 100% rename from go_solutions/leetcode/hard/.gitkeep rename to go_solutions/leetcode-go/backtracking/.gitkeep diff --git a/go_solutions/leetcode/medium/.gitkeep b/go_solutions/leetcode-go/dynamic_programming/.gitkeep similarity index 100% rename from go_solutions/leetcode/medium/.gitkeep rename to go_solutions/leetcode-go/dynamic_programming/.gitkeep diff --git a/go_solutions/leetcode-go/graph/.gitkeep b/go_solutions/leetcode-go/graph/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/go_solutions/leetcode-go/greedy/.gitkeep b/go_solutions/leetcode-go/greedy/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/go_solutions/leetcode-go/heap/.gitkeep b/go_solutions/leetcode-go/heap/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/go_solutions/leetcode-go/linkedlist/.gitkeep b/go_solutions/leetcode-go/linkedlist/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/go_solutions/leetcode-go/stack/.gitkeep b/go_solutions/leetcode-go/stack/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/go_solutions/leetcode-go/string/.gitkeep b/go_solutions/leetcode-go/string/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/go_solutions/leetcode-go/tree/.gitkeep b/go_solutions/leetcode-go/tree/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/go_solutions/main.go b/go_solutions/main.go deleted file mode 100644 index 2bf778c..0000000 --- a/go_solutions/main.go +++ /dev/null @@ -1,14 +0,0 @@ -package main - -import ( - "fmt" - - "git.icoding.fun/yigencong/algorithm/go_solutions/sort" -) - -func main() { - arr := []int{64, 34, 25, 12, 22, 11, 90} - fmt.Println("原始数组:", arr) - sort.BubbleSort(arr) - fmt.Println("排序后数组:", arr) -} diff --git a/go_solutions/sort/bubble-sort.go b/go_solutions/sort/bubble-sort.go deleted file mode 100644 index 45a3235..0000000 --- a/go_solutions/sort/bubble-sort.go +++ /dev/null @@ -1,17 +0,0 @@ -package sort - -import ( - "git.icoding.fun/yigencong/algorithm/go_solutions/utils" -) - -// BubbleSort 冒泡排序算法 -func BubbleSort(arr []int) { - n := len(arr) - for i := 0; i < n-1; i++ { - for j := 0; j < n-i-1; j++ { - if arr[j] > arr[j+1] { - utils.Swap(&arr[j], &arr[j+1]) // 使用 Swap 函数交换元素 - } - } - } -} diff --git a/go_solutions/utils/sort-utils.go b/go_solutions/utils/sort-utils.go deleted file mode 100644 index a932d0f..0000000 --- a/go_solutions/utils/sort-utils.go +++ /dev/null @@ -1,6 +0,0 @@ -package utils - -// 交换数组两个位置的元素 -func Swap(a, b *int) { - *a, *b = *b, *a -}