From 6d08c41c32b844a299a8411d3b4fe5db4f324351 Mon Sep 17 00:00:00 2001 From: 0xff-dev Date: Sun, 20 Jul 2025 21:15:01 +0800 Subject: [PATCH] Add solution and test-cases for problem 1948 --- .../1.jpg | Bin 0 -> 25417 bytes .../2.jpg | Bin 0 -> 31044 bytes .../3.jpg | Bin 0 -> 11408 bytes .../README.md | 61 +++++++--- .../Solution.go | 107 +++++++++++++++++- .../Solution_test.go | 27 +++-- 6 files changed, 173 insertions(+), 22 deletions(-) create mode 100644 leetcode/1901-2000/1948.Delete-Duplicate-Folders-in-System/1.jpg create mode 100644 leetcode/1901-2000/1948.Delete-Duplicate-Folders-in-System/2.jpg create mode 100644 leetcode/1901-2000/1948.Delete-Duplicate-Folders-in-System/3.jpg diff --git a/leetcode/1901-2000/1948.Delete-Duplicate-Folders-in-System/1.jpg b/leetcode/1901-2000/1948.Delete-Duplicate-Folders-in-System/1.jpg new file mode 100644 index 0000000000000000000000000000000000000000..f1cceaf4ef551173345306b1333462e5a6fabaae GIT binary patch literal 25417 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 T*tXvB|1r-0({O+N_uRh$%!e^! literal 0 HcmV?d00001 diff --git a/leetcode/1901-2000/1948.Delete-Duplicate-Folders-in-System/2.jpg b/leetcode/1901-2000/1948.Delete-Duplicate-Folders-in-System/2.jpg new file mode 100644 index 0000000000000000000000000000000000000000..0c93b547ce47fb533cbbd14ff0d61354e20e0087 GIT binary patch literal 31044 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 sbc [!WARNING|style:flat] -> This question is temporarily unanswered if you have good ideas. Welcome to [Create Pull Request PR](https://github.com/kylesliu/awesome-golang-algorithm) - ## Description +Due to a bug, there are many duplicate folders in a file system. You are given a 2D array `paths`, where `paths[i]` is an array representing an absolute path to the `ith` folder in the file system. + +- For example, `["one", "two", "three"]` represents the path `"/one/two/three"`. + +Two folders (not necessarily on the same level) are **identical** if they contain the **same non-empty** set of identical subfolders and underlying subfolder structure. The folders **do not** need to be at the root level to be identical. If two or more folders are **identical**, then **mark** the folders as well as all their subfolders. + +- For example, folders `"/a"` and `"/b"` in the file structure below are identical. They (as well as their subfolders) should **all** be marked: + +- `/a` +- `/a/x` +- `/a/x/y` +- `/a/z` +- `/b` +- `/b/x` +- `/b/x/y` +- `/b/z` + +- However, if the file structure also included the path `"/b/w"`, then the folders `"/a"` and `"/b"` would not be identical. Note that `"/a/x"` and `"/b/x"` would still be considered identical even with the added folder. + +Once all the identical folders and their subfolders have been marked, the file system will **delete** all of them. The file system only runs the deletion once, so any folders that become identical after the initial deletion are not deleted. -**Example 1:** +Return the 2D array `ans` containing the paths of the **remaining** folders after deleting all the marked folders. The paths may be returned in **any** order. + +**Example 1:** + +![1](./1.jpg) ``` -Input: a = "11", b = "1" -Output: "100" +Input: paths = [["a"],["c"],["d"],["a","b"],["c","b"],["d","a"]] +Output: [["d"],["d","a"]] +Explanation: The file structure is as shown. +Folders "/a" and "/c" (and their subfolders) are marked for deletion because they both contain an empty +folder named "b". ``` -## 题意 -> ... +**Example 2:** -## 题解 +![2](./2.jpg) -### 思路1 -> ... -Delete Duplicate Folders in System -```go ``` +Input: paths = [["a"],["c"],["a","b"],["c","b"],["a","b","x"],["a","b","x","y"],["w"],["w","y"]] +Output: [["c"],["c","b"],["a"],["a","b"]] +Explanation: The file structure is as shown. +Folders "/a/b/x" and "/w" (and their subfolders) are marked for deletion because they both contain an empty folder named "y". +Note that folders "/a" and "/c" are identical after the deletion, but they are not deleted because they were not marked beforehand. +``` + +**Example 3:** +![3](./3.jpg) + +``` +Input: paths = [["a","b"],["c","d"],["c"],["a"]] +Output: [["c"],["c","d"],["a"],["a","b"]] +Explanation: All folders are unique in the file system. +Note that the returned array can be in a different order as the order does not matter. +``` ## 结语 diff --git a/leetcode/1901-2000/1948.Delete-Duplicate-Folders-in-System/Solution.go b/leetcode/1901-2000/1948.Delete-Duplicate-Folders-in-System/Solution.go index d115ccf5e..8b89fb2ea 100644 --- a/leetcode/1901-2000/1948.Delete-Duplicate-Folders-in-System/Solution.go +++ b/leetcode/1901-2000/1948.Delete-Duplicate-Folders-in-System/Solution.go @@ -1,5 +1,108 @@ package Solution -func Solution(x bool) bool { - return x +import ( + "fmt" + "sort" + "strings" +) + +type Tree struct { + Value string + ValueIndex map[string]int + Children []*Tree + Del bool +} + +func Solution(paths [][]string) [][]string { + sort.Slice(paths, func(i, j int) bool { + a, b := len(paths[i]), len(paths[j]) + l := min(a, b) + for k := range l { + if paths[i][k] != paths[j][k] { + return paths[i][k] < paths[j][k] + } + } + return a < b + }) + // 将所有的子目录序列化成一个字符串。之前有过这样的题,搞成字符串 + root := &Tree{Value: "/", Children: []*Tree{}, ValueIndex: map[string]int{}} + var buildTree func([]string) + buildTree = func(p []string) { + walker := root + for _, sub := range p { + index, ok := walker.ValueIndex[sub] + if ok { + walker = walker.Children[index] + continue + } + tree := &Tree{ + Value: sub, Children: []*Tree{}, ValueIndex: map[string]int{}, + } + walker.Children = append(walker.Children, tree) + walker.ValueIndex[sub] = len(walker.Children) - 1 + walker = tree + } + } + for _, path := range paths { + buildTree(path) + } + + var buildNodeFlag func(*Tree) string + + pathToNode := map[string][]*Tree{} + buildNodeFlag = func(node *Tree) string { + if node == nil { + return "#" + } + if len(node.Children) == 0 { + return node.Value + "#" + } + sb := strings.Builder{} + for i, c := range node.Children { + tmp := buildNodeFlag(c) + fmt.Sprintf("%d", i) + sb.WriteString(tmp) + } + s := sb.String() + pathToNode[s] = append(pathToNode[s], node) + return node.Value + s + } + buildNodeFlag(root) + for path, nodes := range pathToNode { + if len(path) == 0 { + continue + } + if len(nodes) > 1 { + // 有重复的 + for _, n := range nodes { + n.Del = true + } + } + } + var filterPath func([]string) []string + filterPath = func(cur []string) []string { + walker := root + i := 0 + for ; i < len(cur); i++ { + index := walker.ValueIndex[cur[i]] + if walker.Children[index].Del { + break + } + walker = walker.Children[index] + } + return cur[:i] + } + in := map[string]struct{}{} + var ans [][]string + for _, path := range paths { + res := filterPath(path) + if len(res) > 0 { + key := strings.Join(res, "/") + if _, ok := in[key]; ok { + continue + } + ans = append(ans, res) + in[key] = struct{}{} + } + } + return ans } diff --git a/leetcode/1901-2000/1948.Delete-Duplicate-Folders-in-System/Solution_test.go b/leetcode/1901-2000/1948.Delete-Duplicate-Folders-in-System/Solution_test.go index 14ff50eb4..364e8e454 100644 --- a/leetcode/1901-2000/1948.Delete-Duplicate-Folders-in-System/Solution_test.go +++ b/leetcode/1901-2000/1948.Delete-Duplicate-Folders-in-System/Solution_test.go @@ -10,12 +10,25 @@ func TestSolution(t *testing.T) { // 测试用例 cases := []struct { name string - inputs bool - expect bool + inputs [][]string + expect [][]string }{ - {"TestCase", true, true}, - {"TestCase", true, true}, - {"TestCase", false, false}, + {"TestCase1", [][]string{ + {"a"}, {"c"}, {"d"}, {"a", "b"}, + {"c", "b"}, {"d", "a"}, + }, [][]string{{"d"}, {"d", "a"}}}, + {"TestCase2", [][]string{ + {"a"}, {"c"}, {"a", "b"}, {"c", "b"}, {"a", "b", "x"}, + {"a", "b", "x", "y"}, {"w"}, {"w", "y"}, + }, [][]string{ + {"a"}, {"a", "b"}, + {"c"}, {"c", "b"}, + }}, + {"TestCase3", [][]string{ + {"a", "b"}, {"c", "d"}, {"c"}, {"a"}, + }, [][]string{ + {"a"}, {"a", "b"}, {"c"}, {"c", "d"}, + }}, } // 开始测试 @@ -30,10 +43,10 @@ func TestSolution(t *testing.T) { } } -// 压力测试 +// 压力测试 func BenchmarkSolution(b *testing.B) { } -// 使用案列 +// 使用案列 func ExampleSolution() { }