
算法
StringKai
这个作者很懒,什么都没留下…
展开
-
算法题:求数组中唯一出现n次的数字,其他数字都出现了m次——通用解法
1、求数组中每个数字的二进制形式的各位出现 1 的次数,如:[1010, 1100, 1011] 各位出现 1 的次数为 [3, 1, 2, 1]2、当出现 1 的次数可被 m 整除时,所求整数的这一位为 0 ,否则为 1,可得所求数字的二进制形式3、二进制形式转十进制形式,得到结果...原创 2020-08-06 23:46:55 · 548 阅读 · 0 评论 -
二叉树先序,中序,后序遍历 非递归形式
import java.util.HashSet;import java.util.Set;import java.util.Stack;public class BinaryTreeTraversal { //先序 public static void preOrder(TreeNode root) { TreeNode node = root; ...原创 2020-04-05 20:25:32 · 265 阅读 · 0 评论 -
小米OJ 6.交叉队列 深度优先遍历解法
网上有用动态规划解这题的,代码量比较大.我这里用 深度优先遍历 写更简单一些.思路就是很常见的思路.具体流程:如果 s1[i] 和 s2[j] 都不等于 s3[i+j] , 说明无解 , 返回false.如果s1[i] 等于 s3[i+j] , 递归判断 s1[i+1] , s2[j] 和 s3[i+j+1] 的关系.如果s2[j] 等于 s3[i+j] , 递...原创 2020-03-21 20:54:05 · 224 阅读 · 0 评论 -
leetcode 404. 左叶子之和 详细题解
两种不同形式的递归解法两个解法都是基于递归的,只是形式不一样.解法一需要一个全局变量,和一个额外的getSum()函数.这种写法的好处是使代码更加清晰易懂.解法二则不需要额外的全局变量和函数.总之两种写法思想都差不多,运行时间都是100%.具体代码分析请看注释.解法一int res = 0;//存储结果public int sumOfLeftLeaves(TreeNode root...原创 2019-05-09 21:16:42 · 289 阅读 · 0 评论 -
LeetCode 443. 压缩字符串
前言此题要求使用原地算法求解,即将压缩结果存在原chars[]数组中.使用双指针即可求解此题.这里我们称由相同字符组成的字符串为相同字符序列.指针t指示已压缩的结果的末尾,指针i指示未压缩字符串的开头.遇到相同的字符,指针i便向后滑动,直到遇到不同字符.指针i滑动的距离即为相同字符序列的长度.具体过程及解析如下:public int compress(char[] chars) { ...原创 2019-05-15 23:26:32 · 477 阅读 · 0 评论 -
LeetCode 1005. K 次取反后最大化的数组和 (Java-超越99.66%.详细解析)
题目给定一个整数数组 A,我们只能用以下方法修改该数组:我们选择某个个索引 i 并将 A[i] 替换为 -A[i],然后总共重复这个过程 K 次。(我们可以多次选择同一个索引 i。)以这种方式修改数组后,返回数组可能的最大和。解题思路(1).K>0则执行(2),否则执行(4)(2).取数组A[]中的最小值,并取反.(3).K–.(4).对数组A[]求和注意点第(2)步取最小...原创 2019-05-23 20:33:40 · 250 阅读 · 0 评论