1221. 分割平衡字符串-简单
题目描述:
平衡字符串 中,‘L’ 和 ‘R’ 字符的数量是相同的。
给你一个平衡字符串 s,请你将它分割成尽可能多的子字符串,并满足:
每个子字符串都是平衡字符串。
返回可以通过分割得到的平衡字符串的 最大数量 。
题解:
实际上和括号匹配是一个道理,记录存入的括号类型和数量,当遍历到新字符时就对比,如果类型相同就加1,不同就减1,等于0时可以进行切分
代码(Go):
func balancedStringSplit(s string) int {
sum := 0
tempnum := 0
temp := s[0]
for _,v := range s{
if byte(v) == temp{
tempnum++
}else{
if tempnum > 0{
tempnum--
}else{
temp = byte(v)
tempnum++
}
}
if tempnum == 0{
sum++
}
}
return sum
}
832. 翻转图像-简单
题目描述:
给定一个 n x n 的二进制矩阵 image ,先 水平 翻转图像,然后 反转 图像并返回 结果 。
水平翻转图片就是将图片的每一行都进行翻转,即逆序。
例如,水平翻转 [1,1,0] 的结果是 [0,1,1]。
反转图片的意思是图片中的 0 全部被 1 替换, 1 全部被 0 替换。
例如,反转 [0,1,1] 的结果是 [1,0,0]。
题解:
遍历加双指针翻转的同时反转
代码(Go):
func flipAndInvertImage(image [][]int) [][]int {
for i := 0;i < len(image);i++{
j,k := 0,len(image) - 1
for j <= k{
image[i][j],image[i][k] = image[i][k],image[i][j]
if j != k{
image[i][j] = 1 - image[i][j]
image[i][k] = 1 - image[i][k]
}else{
image[i][j] = 1 - image[i][j]
}
j++
k--
}
}
return image
}
700. 二叉搜索树中的搜索-简单
题目描述:
给定二叉搜索树(BST)的根节点 root 和一个整数值 val。
你需要在 BST 中找到节点值等于 val 的节点。 返回以该节点为根的子树。 如果节点不存在,则返回 null 。
题解:
基础题,没啥好说的
代码(Go):
func searchBST(root *TreeNode, val int) *TreeNode {
for root != nil{
if root.Val == val{
return root
}else if root.Val < val{
root = root.Right
}else{
root = root.Left
}
}
return nil
}
209. 长度最小的子数组-中等
题目描述:
给定一个含有 n 个正整数的数组和一个正整数 target 。
找出该数组中满足其和 ≥ target 的长度最小的 连续子数组 [numsl, numsl+1, …, numsr-1, numsr] ,并返回其长度。如果不存在符合条件的子数组,返回 0 。
题解:
双指针滑动窗口。感觉这类题真的多,天天都能看到
代码(Go):
func minSubArrayLen(target int, nums []int) int {
p,q := 0,0
length := len(nums) + 1
sum := 0
for q < len(nums){
for sum < target && q < len(nums){
sum += nums[q]
q++
}
for sum >= target{
if length > q - p{
length = q - p
}
sum -= nums[p]
p++
}
}
if length == len(nums) + 1{
return 0
}
return length
}
总结
今天四道题都比较简单。实际上我第四题做了个背包问题没做出来,之前没遇到过,去学习了一下背包问题的解法,然后又找了另一道中等题来做,所以今天实际上是做了5道题但是有一个没做出来