1422. Maximum Score After Splitting a String
求出左侧 0 数量和右侧 1 数量之和最多的情况,遍历一次,每次更新最大值,注意要保证字符串始终被切分为 2 个子字符串。
1 | class Solution: |
1423. Maximum Points You Can Obtain from Cards
先假设所有的数字都是从左侧获取的,然后依次遍历 k 个数值,每次遍历将左侧数字剔除,将右侧数字加入,比较最大值。
也可以转换问题为中间连续 len-k 长度数字和最小,然后所有数字之和减去最小值为所求结果。
1 | func maxScore(cardPoints []int, k int) int { |
1424. Diagonal Traverse II
按照对角线方式打印出所有数字,考虑对角线部分数字为空的情况。在一个对角线上的数字,他们的横纵坐标之和都是相同的,使用一个二维数组存储,然后从上到下顺序打印出所有对角线的数值,需要注意每条对角线的数值输出应该是从下到上。
1 | func findDiagonalOrder(mat [][]int) (ans []int) { |
498. Diagonal Traverse
可以用 #1424 相同的方式处理,获取所有对角线的数值,然后遍历,注意输出的顺序,也可以直接模拟,需要处理好边界。
1 | func findDiagonalOrder(matrix [][]int) []int { |
476. Number Complement
一个数字与全 1 进行异或,得到的数字为二进制取反。
1 | package main |