视频链接
手把手带你刷Leetcode力扣|各个击破数据结构和算法|大厂面试必备技能【已完结】_哔哩哔哩_bilibili
数组
485
伪代码
遍历{
从当前位置遍历{
计数器为0
如果为1{
记录长度
计数器与最大值比较并存储最大值
}
否则退出当前遍历
}
}
Golang代码
package main
import (
"fmt"
)
func main() {
fmt.Println(findMaxConsecutiveOnes([]int{1,1,0,1,1,1}))
}
func findMaxConsecutiveOnes(nums []int) int {
ans := 0
for i:=0;i<len(nums);i++{
count := 0
for j :=i;j<len(nums);j++{
if nums[j] == 1{count++}else {break}
}
ans = max(ans,count)
}
return ans
}
func max(a,b int)int {
if a>b{return a}
return b
}
283
思路:非0的前面的位置填满,后面的位置置为0
伪代码
标志一=0表示为0和非零元素边界
遍历{
如果num[i]非零{
移动到num[标志一]
标志一++
}
}
从标志一遍历{
置零
}
Golang代码
package main
func main() {
moveZeroes([]int{0,1,0,3,12})
}
func moveZeroes(nums []int) {
flag := 0
for i:=0;i<len(nums);i++{
if nums[i] != 0{
nums[flag] = nums[i]
flag++
}
}
for i:=flag;i<len(nums);i++{
nums[i] = 0
}
}
27
伪代码
标志一=0表示值为val和非val的边界
遍历{
如果nums[i] != val{
nums[标志一] = nums[i]
标志一++
}
}
返回 标志一
(边界条件是这样想出来的:假设没有元素等于val那么标志一最后++等于1)
Golang代码
package main
import "fmt"
func main() {
fmt.Println(removeElement([]int{2},3))
}
func removeElement(nums []int, val int) int {
flag := 0
for i:=0;i<len(nums);i++{
if nums[i] != val{
nums[flag] = nums[i]
flag++
}
}
return flag
}
203 力扣
伪代码
标志一=&ListNode(0)
标志一.Next = head
遍历 for tmp:= 标志一;tmp.Next != nil{
如果val == 标志一.Next.Val{
tmp.Next = tmp.Next.Next
}
else{
tmp = tmp.Next
}
}
返回head
Golang代码
package main
func main() {
}
type ListNode struct {
Val int
Next *ListNode
}
func removeElements(head *ListNode, val int) *ListNode {
dummyHead := &ListNode{Val: 0,Next:head}
for tmp:= dummyHead;tmp.Next != nil;{
if tmp.Next.Val == val{
tmp.Next = tmp.Next.Next
}else {
tmp = tmp.Next
}
}
return dummyHead.Next
}
206 力扣
伪代码