刷题笔记leetcode——手把手带你刷Leetcode力扣学习笔记

视频链接

手把手带你刷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  力扣

伪代码

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值