1536. 排布二进制网格的最少交换次数;754. 到达终点数字;1106. 解析布尔表达式

1536. 排布二进制网格的最少交换次数

核心思想:贪心。枚举每一行,然后去找离这行最近的满足要求的那一行。我们用j保存每一行的最后一个1,那么尾部的0个数为n-1-j,每一行需要的0个数为n-i-1,所以得出结论 i >= j。然后我们就去一行一行找,找到了就翻转,这里有个小技巧,就是在枚举每一行的时候用一个k=-1表示,如果最后k还为-1就没有找到。

1536. 排布二进制网格的最少交换次数;754. 到达终点数字;1106. 解析布尔表达式_第1张图片

754. 到达终点数字

核心思想:数学题。分情况讨论,1.直接走到终点;2.离终点为奇数距离,且再走一步为偶数;3.离终点为奇数距离,且再走两步才为偶数.4.离终点为偶数距离。结论:1,4所需的步数是一样的,然后奇数的话,每多走一次就加1。详细解释可以看灵神的题解,这里只说大致思路。

1536. 排布二进制网格的最少交换次数;754. 到达终点数字;1106. 解析布尔表达式_第2张图片

1106. 解析布尔表达式

核心思想:栈。用栈来模拟人的计算,如果遇到右括号,那么我们就处理这个右括号前面的计算,然后把它放入栈中,等所有都处理完了那么判读最后栈中剩余的值即可。

1536. 排布二进制网格的最少交换次数;754. 到达终点数字;1106. 解析布尔表达式_第3张图片

你可能感兴趣的:(算法,python)