
数据结构与算法
nwpu_geeker
向大牛学习!
展开
-
LeetCode 617. Merge Two Binary Tree (合并两个二叉树)
Given two binary trees and imagine that when you put one of them to cover the other, some nodes of the two trees are overlapped while the others are not.You need to merge them into a new binary tree...原创 2018-03-20 09:30:44 · 1039 阅读 · 0 评论 -
n&(n-1)位运算的妙用
做oj遇到一道题,求二进制中1的个数。发现有大佬用来(n&n-1)。觉得很神奇。有空下来细想。确实是这么个道理。记录一下自己的分析过程一、n-1发生了什么①、二进制数n,n-1后,如果最后一位是0,将向前一位借2,2-1=1。最后一位为1。如果前一位为0,将继续向前一位借2,加上本身少掉的1.则变为1。一直遇到1。减为0.所以 二进制 xxxx10000-1 = xxxx01...原创 2018-03-30 21:27:25 · 22305 阅读 · 1 评论 -
MD5加密算法全解析
“MD5”加密算法全解析 大家好,我们现在来讲解关于加密方面的知识,说到加密我认为不得不提MD5,因为这是一种特殊的加密方式,它到底特殊在哪,现在我们就开始学习它全称:message-digest algorithm 5 翻译过来就是:信息 摘要 算法 5...转载 2018-03-26 10:50:26 · 1197 阅读 · 0 评论 -
剑指Offer-29-java实现查找数组中出现次数超过一半的元素
思路: 数组中有一个数字出现的次数超过数组长度的一半,也就是说它出现的次数比其他所有数字出现次数的和还要多。 因此我们可以考虑在遍历数组的时候保存两个值: 一个是数组中的一个数字, 一个是次数。当我们遍历到下一个数字的时候,如果下一个数字和我们之前保存的数字相同,则次数加1:如果下一个数字和我们之前保存的数字,不同,则次数减1 。如果减1之后,此时次数为零,我们需要保存下一个数字,并把次数设为原创 2018-03-26 15:58:34 · 1943 阅读 · 0 评论 -
leetcode+华为笔试题-java实现返回一个整数数组中最大子数组的和
方法一:暴力枚举 定义一个最大值max初始化一个很小的数,定义一个变量sum表示求和值,遍历数组元素,从第一个元素开始,依次相加,如果和sum比最大值max大就将sum赋值给最大值。然后再来一个循环控制从第i个数组元素开始求和,直到n. 时间复杂度:O(n^2)方式二:贪心法 因为每次求和都是将i前面的元素相加,会出现重复的情况,如果出现相加完之后是负数,说明这时我就要继续遍历找到第...原创 2018-03-29 10:49:45 · 1561 阅读 · 2 评论 -
链家笔试题--java实现两个大整数相乘的算法
两个字符串表示两个非常大的数,请设计算法计算这两个大数的乘积,结果用字符串表示。例如S1=”7832974972840919321747983209327”,S2=”1987432091904327543957”,设计算法计算出S1*S2的结果,结果用String输出,不准用BigInter。思路: 根据手工计算两数相乘的过程,用代码实现这个过程。注意没有考虑负数的情况。代码如下:...原创 2018-03-29 16:39:09 · 2229 阅读 · 0 评论