Leetcode PHP题解--D70 784. Letter Case Permutation

D70 784. Letter Case Permutation 题目链接 784. Letter Case Permutation 题目分析 给定一个字符串。返回将其字母部分替换成大小写分别可能出现的所有字符。 例如,字符串为a时,返回a和A。 字符串为Ab时,返回['Ab','AB','ab','aB']。 思路 先找到字符串中字母出现的位置。 对于每个出现字母的位置,将小写和大写两...

Leetcode PHP题解--D69 258. Add Digits

D69 258. Add Digits 题目链接 258. Add Digits 题目分析 给定一个数字,给每一位相加,对得到结果进行相同的操作。直到最终结果为一位数。 题目还要求尽量用O(1)的时间复杂度。 思路 暂时没想出O(1)复杂度的,就先用正常的while...do循环完成。 讲数字拆分成数组,用求和函数计算和。判断求和后的值是否大于10。大于则重复操作。小于则退出并返回。 最...

Leetcode PHP题解--D68 283. Move Zeroes

D68 283. Move Zeroes 题目链接 283. Move Zeroes 题目分析 给定一个整数数组,将值为0的元素移动到数组末尾,而不改动其他元素出现的顺序。 思路 计算总共有多少个元素。 再在去0后的元素末尾填充0到计算出的数组长度。 最终代码 ...

Leetcode PHP题解--D67 485. Max Consecutive Ones

D67 485. Max Consecutive Ones 题目链接 485. Max Consecutive Ones 题目分析 给定一个二进制数组(只含有0和1的数组),返回最长的1串。 思路 逐个遍历,若为1则计数。遇到0则判断当前计数是否大于之前记录的最大数字,并置零。 返回最大数。 最终代码 ...

Leetcode PHP题解--D66 896. Monotonic Array

D66 896. Monotonic Array 题目链接 896. Monotonic Array 题目分析 给定一个数字数组,判断是否单调递增或递减。 单调递增即,对于第n位数字,其后面的数组都大于或等于它。 单调递减则为,其后面的数组都小于它。 思路 先要找到头两个不同的数字,用来判断该数组是单调递增还是递减。 判断后,再逐个遍历。若为单调递增,那么不能存在小于前一个数字的值。若为...

Leetcode PHP题解--D65 892. Surface Area of 3D Shapes

D65 892. Surface Area of 3D Shapes 题目链接 892. Surface Area of 3D Shapes 题目分析 给定一个三维数组,返回所行程柱状体的表面积。 思路 三维数组中,$arr[$i][$j]的值表示在该点上柱状体的高度。 因此,对每一个值,需要算做6份(1*1*1)的面积。但是,当上方或下方有块时,需要减去相应面积。 当相邻位置有方块时,...

Leetcode动态规划之PHP解析(120. Triangle)

2019-5-18 星期六  开始吧上一题链接: Leetcode动态规划之PHP解析(70. Climbing Stairs)动态规划题第二天题目描述给定一个三角形,好吧,其实就是一个二维数组,让我们求从上至下的最小路径和,往下一层,你只能移动相邻之间的两个数。题目解析还是使用动态规划的两个步骤。1.定义好状态2.求出递推的公式。递归和动态规划有一个不同的地方就是递归是自上而下,比如在...

Leetcode PHP题解--D64 292. Nim Game

D64 292. Nim Game 题目链接 292. Nim Game 题目分析 假设你和朋友玩一个捡石头的游戏,你和朋友轮流拿1~3颗石头。拿到最后一颗石头的一方为剩方。第一轮由你开始捡石头。 同时假设你和你的朋友都足够聪明,每次都能采取最优策略。 现给定一个石头数量,判断你最终是否能取得胜利。 思路 我们先从少一点开始推广到n个石头。 如果有1~3颗石头,因为规定了是你开始、还假设...