思路 求一个字符串的全排列组合,直接想到使用回溯中的全排列算法。 回顾一下全排列算法: 假设 需要排列 abc。 下图表示了整个递归过程。对abc进行全排列就是有三个位置用abc去填,全排列算法使用交换来实现填入操作。如图,第一层递归拿到abc,固定住第一个元素,然后使用循环的方式分别将后面的每个元素和第一个元素进行交换,这样一次层递归便将第一个位置的字母确定了,然后进入在循环中进入下一层递归去确...

题目描述 思路 思路1->运用全排列进行判断 结果超时 思路2:利用回文串特性,统计字符串中字符出现次数,将字符出现次数除以2 乘以2,此时统计了偶数次的字符,正好放两边, 剩下奇数怎么办呢,只有第一个奇数字符才加1. 例题: a 出现4次 b出现5次,那么答案4/2*2 + 5/2*2,最后加上1等于9,aabbbbbaa  代码 重难点分析 此题中==号优先级高于移位,所以在用...

409.最长回文串 题目描述 做法 ~~1.自己的做法~~ 2. 位运算+只生成长度为58的数组 3. 统计奇数的个数 链接 题目描述 做法 1.自己的做法 遍历 s 中的每一个字符,对每一个字符放入到 map 中。 最后统计 map 中每个字符出现的次数 如果是偶数,结果直接加这个数 如果是奇数,结果加这个数减1,并且设置一个 boolean 类型变量记录是否出现了奇数 最后如果出现了奇数,那么...

40.最小的k个数 题目描述 1.经典 top k 问题 (1)快排:最最最高效解决top k 问题---O(N) (2)大根堆(前k小)/小根堆(前k大),Java中有现成的PriorityQueue,实现起来最简单,O(NlogK) (3)二叉搜索树也可以O(NlogK)解决Top K问题 2.自己做法(Arrays.sort()) 链接 题目描述 1.经典 top k 问题 (1)快排:最最...

999. 车的可用捕获量 题目描述 思路 1.代码 2.复杂度分析 链接 题目描述 思路 首先找到 车 的位置。 然后上下左右 四个方向搜索: 如果遇见 象 ,结束搜索 如果遇见卒 ,num++ ,结束搜索 如果超出边界,结束搜索 1.代码 2.复杂度分析 时间复杂度:O(N^2) 空间复杂度:O(1)...

题目描述 思路 思路一:递归回溯 使用一个长度为10的数组进行组合编码,最终输出时间 思路二:两重for循环分别代表小时和分钟 代码   重难点分析 1. bitset  2.count1  ...

给定一个无序的整数数组,找到其中最长上升子序列的长度。 示例: 输入: [10,9,2,5,3,7,101,18] 输出: 4 解释: 最长的上升子序列是 [2,3,7,101],它的长度是 4。 说明: 可能会有多种最长上升子序列的组合,你只需要输出对应的长度即可。 你算法的时间复杂度应该为 O(n2) 。 进阶: 你能将算法的时间复杂度降低到 O(n log n) 吗? 思路 (1)动态规划。...

289. 生命游戏

leetcode每日一题

  

2020-04-04 05:49:25

289. 生命游戏 题目描述 思路 链接 题目描述 思路 对表格中的每一个点,看看周围八个位置有几个存活的细胞 用一个新的数组保存结果,最后再复制回去 主要是注意对于每个点周围八个位置的处理,可以使用dx 和 dy 两个数组...

前言 此题😉解法还是想了一段时间,可以利用高4位来存储信息。为了方便代码使用16进制位操作 记 0x0000 4个字节,每个字节8位, 这表示一个int数据 0x0001 生命游戏当前状态 0x0010 倒数第二个8位为生命游戏下一个状态。 当然也可以使用二进制 01、10 题目描述 题目链接 思路 伪代码 遍历整个数组, 判断8邻域内1的个数 根据个数决定下一个状态。 遍历数组转换下一个状态 ...

今天的签到题是比较简单的,我们可先将所有方块的表面积算出来(小方块个数乘6),再减去它们遮住的那部分面积就好了。 对于不同柱体之间的遮盖面积,我们每次只要考虑该位置的右边和下边就好了,算法为方块数量较小的柱体的方块数*2。 对于柱间遮住的面积为:该柱体(方块数-1)*2。...

解题思路:首先,我们应该对二叉搜索树有所了解。 二叉搜索树:二叉查找树(Binary Search Tree),(又:二叉搜索树,二叉排序树)它或者是一棵空树,或者是具有下列性质的二叉树: 若它的左子树不空,则左子树上所有结点的值均小于它的根结点的值; 若它的右子树不空,则右子树上所有结点的值均大于它的根结点的值; 它的左、右子树也分别为二叉排序树。 本题是利用递归思想,判断根节点的左子树元素是否...