
算法
当幸福来敲门1
仲夏夜,星之空, 年少轻狂挽如风
展开
-
树的广度优先遍历(非递归)和深度优先遍历
package leetcode.test;import java.util.ArrayList;import java.util.Iterator;import java.util.List;import java.util.Scanner;public class MaxSum { public static void main(String[] args) { MaxSum原创 2017-02-28 20:42:17 · 1002 阅读 · 0 评论 -
根据先序,中序求一棵树
根据树的先续和中序遍历,求一个树。本来以为是很简单的一个问题,结果写起程序来,还是有点麻烦的事情思想:根据先根数组找到根root然后拿着root到中根数组中将数组一分为二,形成左右子树对左右子树进行递归注意:最后将一棵树保存到数组Tree的时候,遵循的规律是树根为i,左子为2i+1, 右子为2i+2,其实每次划分数组的时候,都是先找到树根,然后将数组一份为二,然后根据其原创 2017-03-16 10:29:38 · 750 阅读 · 0 评论 -
A + B 问题
基础java运算符: ^: 异或运算符&: 与运算符~:运算符|: 运算符思想对于 5 + 3 来说: 5的二进制是:a = 101 ; 3 二进制是 b = 011我们可以通过下面的方法得到:101 ^ 011 = 110(101 & 011) << 1 = 010110 ^ 010 = 100(110 & 010) <<1 = 100100 ^ 100 = 000原创 2017-12-20 11:48:32 · 452 阅读 · 0 评论 -
丑数 II
思路我们可以首先写出前几个丑数作为种子,比如 array = [1, 2, 3, 4, 5],这是前5个丑数,我们如何确定第6个呢? 第六个丑数,一定是 value2=min(array[i]∗2),value3=min(array[i]∗3),value5=min(array[i]∗5)value2=min(array[i] *2), value3=min(array[i] * 3),value原创 2017-12-20 12:02:42 · 162 阅读 · 0 评论 -
排序
排序始终是个绕不过去的问题 0.0归并排序思路步骤 划分问题: 把序列分成元素个数尽量相等的两半递归求解:把两半元素分别排序合并问题:把连个有序表合并成一个算法的时间复杂度: O(nlogn) (这个我还没理解)注意在上图中,比如说当序列变成A[i]:38,49,65,97B[j]:13,27,76 A[i]: 38,49,65,97 B[j] :13 ,27,76原创 2017-12-20 14:52:29 · 130 阅读 · 0 评论 -
c++中的常用语法
知识点long long , long , int 的长度: 32位系统:int(4个字节) long(4个字节) long long(8个字节)64位系统:int(4个字节) long (8个字节) long long(8个字节)推荐的声明数组的方法: const int maxn = 100 + 10;int A[maxn];c++中有bool类型,但是c中没有 -原创 2017-12-12 23:03:06 · 275 阅读 · 0 评论 -
全组合(高效)
使用以为运算符生成全组合(很经典):package com.set.test;public class SetTest { public static void main(String[] args) { String str[] = { "A", "B", "C", "D", "E" }; int nCnt = str.length; int nB原创 2017-12-07 09:12:49 · 177 阅读 · 0 评论 -
全组合
思路使用递归的方式,实现全组合。使用的公式 C(m, n) = C(m-1, n-1) + C(m, n-1);代码public void recursion(int index, int count, String str) { //对 begin - end 之间的数字进行全组合 if (count == 0) { list.add...原创 2018-03-12 15:12:37 · 219 阅读 · 0 评论