mirror of
https://github.com/halfrost/LeetCode-Go.git
synced 2025-07-05 16:36:41 +08:00
规范格式
This commit is contained in:
19
leetcode/0027.Remove-Element/27. Remove Element.go
Normal file
19
leetcode/0027.Remove-Element/27. Remove Element.go
Normal file
@ -0,0 +1,19 @@
|
||||
package leetcode
|
||||
|
||||
func removeElement(nums []int, val int) int {
|
||||
if len(nums) == 0 {
|
||||
return 0
|
||||
}
|
||||
j := 0
|
||||
for i := 0; i < len(nums); i++ {
|
||||
if nums[i] != val {
|
||||
if i != j {
|
||||
nums[i], nums[j] = nums[j], nums[i]
|
||||
j++
|
||||
} else {
|
||||
j++
|
||||
}
|
||||
}
|
||||
}
|
||||
return j
|
||||
}
|
68
leetcode/0027.Remove-Element/27. Remove Element_test.go
Normal file
68
leetcode/0027.Remove-Element/27. Remove Element_test.go
Normal file
@ -0,0 +1,68 @@
|
||||
package leetcode
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"testing"
|
||||
)
|
||||
|
||||
type question27 struct {
|
||||
para27
|
||||
ans27
|
||||
}
|
||||
|
||||
// para 是参数
|
||||
// one 代表第一个参数
|
||||
type para27 struct {
|
||||
one []int
|
||||
two int
|
||||
}
|
||||
|
||||
// ans 是答案
|
||||
// one 代表第一个答案
|
||||
type ans27 struct {
|
||||
one int
|
||||
}
|
||||
|
||||
func Test_Problem27(t *testing.T) {
|
||||
|
||||
qs := []question27{
|
||||
|
||||
question27{
|
||||
para27{[]int{1, 0, 1}, 1},
|
||||
ans27{1},
|
||||
},
|
||||
|
||||
question27{
|
||||
para27{[]int{0, 1, 0, 3, 0, 12}, 0},
|
||||
ans27{3},
|
||||
},
|
||||
|
||||
question27{
|
||||
para27{[]int{0, 1, 0, 3, 0, 0, 0, 0, 1, 12}, 0},
|
||||
ans27{4},
|
||||
},
|
||||
|
||||
question27{
|
||||
para27{[]int{0, 0, 0, 0, 0}, 0},
|
||||
ans27{0},
|
||||
},
|
||||
|
||||
question27{
|
||||
para27{[]int{1}, 1},
|
||||
ans27{0},
|
||||
},
|
||||
|
||||
question27{
|
||||
para27{[]int{0, 1, 2, 2, 3, 0, 4, 2}, 2},
|
||||
ans27{5},
|
||||
},
|
||||
}
|
||||
|
||||
fmt.Printf("------------------------Leetcode Problem 27------------------------\n")
|
||||
|
||||
for _, q := range qs {
|
||||
_, p := q.ans27, q.para27
|
||||
fmt.Printf("【input】:%v 【output】:%v\n", p.one, removeElement(p.one, p.two))
|
||||
}
|
||||
fmt.Printf("\n\n\n")
|
||||
}
|
60
leetcode/0027.Remove-Element/README.md
Normal file
60
leetcode/0027.Remove-Element/README.md
Normal file
@ -0,0 +1,60 @@
|
||||
# [27. Remove Element](https://leetcode.com/problems/remove-element/)
|
||||
|
||||
## 题目
|
||||
|
||||
Given an array nums and a value val, remove all instances of that value in-place and return the new length.
|
||||
|
||||
Do not allocate extra space for another array, you must do this by modifying the input array in-place with O(1) extra memory.
|
||||
|
||||
The order of elements can be changed. It doesn't matter what you leave beyond the new length.
|
||||
|
||||
Example 1:
|
||||
|
||||
```c
|
||||
Given nums = [3,2,2,3], val = 3,
|
||||
|
||||
Your function should return length = 2, with the first two elements of nums being 2.
|
||||
|
||||
It doesn't matter what you leave beyond the returned length.
|
||||
```
|
||||
|
||||
Example 2:
|
||||
|
||||
```c
|
||||
Given nums = [0,1,2,2,3,0,4,2], val = 2,
|
||||
|
||||
Your function should return length = 5, with the first five elements of nums containing 0, 1, 3, 0, and 4.
|
||||
|
||||
Note that the order of those five elements can be arbitrary.
|
||||
|
||||
It doesn't matter what values are set beyond the returned length.
|
||||
```
|
||||
|
||||
Clarification:
|
||||
|
||||
Confused why the returned value is an integer but your answer is an array?
|
||||
|
||||
Note that the input array is passed in by reference, which means modification to the input array will be known to the caller as well.
|
||||
|
||||
Internally you can think of this:
|
||||
|
||||
```c
|
||||
// nums is passed in by reference. (i.e., without making a copy)
|
||||
int len = removeElement(nums, val);
|
||||
|
||||
// any modification to nums in your function would be known by the caller.
|
||||
// using the length returned by your function, it prints the first len elements.
|
||||
for (int i = 0; i < len; i++) {
|
||||
print(nums[i]);
|
||||
}
|
||||
```
|
||||
|
||||
## 题目大意
|
||||
|
||||
给定一个数组 nums 和一个数值 val,将数组中所有等于 val 的元素删除,并返回剩余的元素个数。
|
||||
|
||||
## 解题思路
|
||||
|
||||
这道题和第 283 题很像。这道题和第 283 题基本一致,283 题是删除 0,这一题是给定的一个 val,实质是一样的。
|
||||
|
||||
这里数组的删除并不是真的删除,只是将删除的元素移动到数组后面的空间内,然后返回数组实际剩余的元素个数,OJ 最终判断题目的时候会读取数组剩余个数的元素进行输出。
|
Reference in New Issue
Block a user