Compare commits

...
8 Commits
Author SHA1 Message Date
wolves bb44fe2957 routine 2026-05-12 11:38:43 +08:00
wolves 39954c4a80 routine 2026-04-22 18:06:24 +08:00
wolves 4355946f39 routine 2026-04-22 00:18:54 +08:00
wolves 45faf83d37 routine 2026-04-15 00:51:20 +08:00
wolves 6339943b70 routine 2026-04-12 16:23:39 +08:00
wolves be9ecb423a routine 2026-03-31 02:54:05 +08:00
wolves 84921163ec Merge branch 'main' of https://github.com/lWolvesl/leetcode 2026-03-27 21:49:13 +08:00
wolves 9b63dc45d3 routine 2026-03-27 21:48:51 +08:00
10 changed files with 230 additions and 71 deletions
+17
View File
@@ -0,0 +1,17 @@
package main
func majorityElement(nums []int) int {
a, s := nums[0], 1
for i := 1; i < len(nums); i++ {
if a == nums[i] {
s++
continue
}
s--
if s == 0 {
a = nums[i]
s = 1
}
}
return a
}
+31
View File
@@ -0,0 +1,31 @@
package main
import "fmt"
func areSimilar(mat [][]int, k int) bool {
lenX := len(mat)
lenY := len(mat[0])
shift := k % lenY
for i := 0; i < lenX; i++ {
for j := 0; j < lenY; j++ {
next := 0
if i%2 == 0 {
next = (j + shift) % lenY
} else {
next = (j - shift + lenY) % lenY
}
if mat[i][j] != mat[i][next] {
return false
}
}
}
return true
}
func main() {
fmt.Println(areSimilar([][]int{{1, 2, 3}, {4, 5, 6}, {7, 8, 9}}, 4))
fmt.Println(areSimilar([][]int{{1, 2, 1, 2}, {5, 5, 5, 5}, {6, 3, 6, 3}}, 2))
fmt.Println(areSimilar([][]int{{2, 2}, {2, 2}}, 3))
}
+12
View File
@@ -0,0 +1,12 @@
package main
func reverseSubmatrix(grid [][]int, x int, y int, k int) [][]int {
for i := 0; i < k/2; i++ {
for j := range k {
temp := grid[x+k-1-i][y+j]
grid[x+k-1-i][y+j] = grid[x+i][y+j]
grid[x+i][y+j] = temp
}
}
return grid
}
+20
View File
@@ -0,0 +1,20 @@
package leetcode
import "math"
func abs(x int) int {
if x < 0 {
return -x
}
return x
}
func getMinDistance(nums []int, target int, start int) int {
ans := math.MaxInt
for i, v := range nums {
if v == target {
ans = min(abs(i-start), ans)
}
}
return ans
}
+33
View File
@@ -0,0 +1,33 @@
package leetcode
// 旋转90度通用方法就是 先水平旋转,然后转置
func findRotation(mat [][]int, target [][]int) bool {
n := len(mat)
// 最多旋转 4 次
for k := 0; k < 4; k++ {
// 旋转操作
for i := 0; i < n/2; i++ {
for j := 0; j < (n+1)/2; j++ {
mat[i][j], mat[n-1-j][i], mat[n-1-i][n-1-j], mat[j][n-1-i] =
mat[n-1-j][i], mat[n-1-i][n-1-j], mat[j][n-1-i], mat[i][j]
}
}
if isEqual(mat, target) {
return true
}
}
return false
}
func isEqual(mat, target [][]int) bool {
n := len(mat)
for i := 0; i < n; i++ {
for j := 0; j < n; j++ {
if mat[i][j] != target[i][j] {
return false
}
}
}
return true
}
+25
View File
@@ -0,0 +1,25 @@
package leetcode
func abs(x int) int {
if x < 0 {
return -x
}
return x
}
func closestTarget(words []string, target string, startIndex int) int {
ans := len(words)
n := len(words)
for i, word := range words {
if word == target {
dist := abs(i - startIndex)
ans = min(ans, min(dist, n-dist))
}
}
if ans < n {
return ans
}
return -1
}
+35
View File
@@ -0,0 +1,35 @@
package leetcode
import "math"
func abs(x int) int {
if x < 0 {
return -x
}
return x
}
func minimumDistance(nums []int) int {
m := make(map[int]([]int))
for i, v := range nums {
_, ok := m[v]
if !ok {
m[v] = make([]int, 0)
}
m[v] = append(m[v], i)
}
ans := math.MaxInt
for _, v := range m {
if len(v) < 3 {
continue
}
for i := 0; i+2 < len(v); i++ {
temp := abs(v[i]-v[i+1]) + abs(v[i]-v[i+2]) + abs(v[i+1]-v[i+2])
ans = min(ans, temp)
}
}
if ans == math.MaxInt {
return -1
}
return ans
}
+57
View File
@@ -0,0 +1,57 @@
package A
type node1559 struct {
x, y int
px, py int
}
func containsCycle(grid [][]byte) bool {
m := len(grid)
n := len(grid[0])
if m < 2 || n < 2 {
return false
}
visited := make([][]bool, m)
for i := range visited {
visited[i] = make([]bool, n)
}
dirs := [][2]int{{0, -1}, {0, 1}, {-1, 0}, {1, 0}}
for i := 0; i < m; i++ {
for j := 0; j < n; j++ {
if visited[i][j] {
continue
}
visited[i][j] = true
stack := []node1559{{x: i, y: j, px: -1, py: -1}}
for len(stack) > 0 {
top := stack[len(stack)-1]
stack = stack[:len(stack)-1]
for _, dir := range dirs {
nx := top.x + dir[0]
ny := top.y + dir[1]
if nx < 0 || nx >= m || ny < 0 || ny >= n {
continue
}
if grid[nx][ny] != grid[top.x][top.y] {
continue
}
if !visited[nx][ny] {
visited[nx][ny] = true
stack = append(stack, node1559{x: nx, y: ny, px: top.x, py: top.y})
} else if nx != top.px || ny != top.py {
return true
}
}
}
}
}
return false
}
-71
View File
@@ -1,71 +0,0 @@
# CLAUDE.md
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
## Project Overview
This is a LeetCode solutions repository organized by date and problem type. The codebase contains solutions in multiple languages including C, C++, Go, and Java. The repository is structured with:
- Date-based directories (e.g., `23/04/`, `25/11/`) containing individual problem solutions
- Data structure implementations in the `dataStruct/` directory (LinkedList, Heap, Tree, etc.)
- Special categories like "dynamic planning" and "else"
## Development Commands
### Building and Running Code
Since this repository contains individual solution files rather than a unified project, compilation and execution is done per file:
**For C/C++ files:**
```bash
# Compile C file
gcc -o solution filename.c
# Compile C++ file
g++ -o solution filename.cpp
# Run the compiled executable
./solution
```
**For Go files:**
```bash
# Run Go file directly
go run filename.go
# Build Go executable
go build filename.go
```
**For Java files:**
```bash
# Compile Java file
javac filename.java
# Run Java program
java filename
```
### Testing Solutions
There are no automated tests in this repository. Each solution should be tested manually by:
1. Compiling/running the solution file directly
2. Verifying output against expected LeetCode test cases
3. Using the data structure helper functions (like `list()`, `len()`, `creatRandomTree()`) for debugging
## Code Architecture
### Data Structures
The repository includes custom implementations of common data structures:
- **LinkedList**: Defined in `dataStruct/LinkedList/lists.h` with `ListNode` struct and utility functions (`createRandomList`, `list`, `array`, `len`)
- **Tree**: Defined in `dataStruct/Tree/Tree.h` with `TreeNode` struct and `creatRandomTree` function
- **Heap**: Basic template implementation in `dataStruct/Heap/Heap.h`
- **Queue**: Priority queue implementation in `dataStruct/Queue/PriorityQueue.c`
### File Organization
- **Date directories**: Solutions organized by year/month (e.g., `25/11/` for November 2025)
- **Language variants**: Some problems have multiple language implementations (e.g., `3005.go`, `3005.cpp`, `3005.java`)
- **Utility headers**: Common tools and data structures in `tools.h` and the `dataStruct/` directory
### Common Patterns
- Solutions often include debug output functions for visualizing data structures
- Random data generation functions are provided for testing (`createRandomList`, `creatRandomTree`)
- Header files use proper include guards and pragma once directives
When working on new solutions, follow the existing patterns and place files in the appropriate date directory based on when the solution was created.
View File