Invert a binary tree. to Trivia:This problem was inspired by this original tweet by Max Howell: 分析:翻转二叉树 思路1: 使用递归的方式,时间复杂度为o(n),空间复杂度为o(n) JAVA CODE ...
分类:
其他好文 时间:
2017-09-05 10:04:14
阅读次数:
123
算法的时间复杂度和空间复杂度合称为算法的复杂度。 1.时间复杂度 (1)时间频度 一个算法执行所耗费的时间,从理论上是不能算出来的,必须上机运行测试才能知道。但我们不可能也没有必要对每个算法都上机测试,只需知道哪个算法花费的时间多,哪个算法花费的时间少就可以了。并且一个算法花费的时间与算法中语句的执 ...
分类:
其他好文 时间:
2017-09-05 00:25:30
阅读次数:
183
题目描述 Sort a linked list in O(n log n) time using constant space complexity. 思路:时间复杂度为O(nlogn),空间复杂度为常数,用归并排序 在下的代码 时间1162ms 空间27696k /** * Definition ...
分类:
其他好文 时间:
2017-08-27 12:52:56
阅读次数:
216
1、例题PermutationGiven a collection of distinct numbers, return all possible permutations.For example,[1,2,3] have the following permutations:[1,2,3], [ ...
分类:
其他好文 时间:
2017-08-26 21:29:24
阅读次数:
136
觉得还是先从简单例子程序着手,先了解各个算法的基本思想。 目录: 算法是指对特定问题求解步骤 的一种描述 算法的评价标准:时间复杂度与空间复杂度。 时间复杂度:考虑给定的数据数目n,关于算法的执行次数。渐进上界用O()表示,最坏情况对衡量算法的好坏具有实际的意义。 空间复杂度:算法占用的空间大小。一 ...
分类:
编程语言 时间:
2017-08-26 15:59:53
阅读次数:
1754
一、区别: 程序中可以允许无限循环的存在,如一般操作系统中的作业调度器(Job Schduler),在启动后,除非关机或产生例外情况,不然会一直处于执行等待循环。但算法必须是有限的,这是两者之间最大的不同。 二、评判程序设计语言好坏的四项原则: 可读性高 平均成本低 (编码、执行、编译、维护、学习、 ...
分类:
编程语言 时间:
2017-08-26 15:54:42
阅读次数:
171
给定一个 N * N的矩阵,把这个矩阵调整成顺时针转动90度后的形式 要求额外空间复杂度为O(1) 这里仍然使用分圈处理方式 如果你愿意一层一层一层的拨开我的心~ 哈哈哈 由外到内的旋转 上代码一目了然: ...
分类:
编程语言 时间:
2017-08-25 15:49:21
阅读次数:
113
一.为什么要学习算法? 先来个简单的算法比较:求sum=1+2+3+...+(n-1)+n的结果. 输入整数n,输出 sum 解法一:for循环 解法二: 很明显,解法二要优于解法一。因为解法二需要运算的次数少。我们去衡量一个算法的好坏主要是从时间复杂度和空间复杂度来看的,其次才到可读性,可维护性。 ...
分类:
编程语言 时间:
2017-08-25 14:00:12
阅读次数:
158
栈和队列: 栈和队列是非常重要的两种数据结构,在软件设计中应用很多。栈和队列也是线性结构,线性表、栈和队列这三种数据结构的数据元素以及数据元素间的逻辑关系完全相同,差别是线性表的操作不受限制,而栈和队列的操作受到限制。栈的操作只能在表的一端进行,队列的插入操作在表的一端进行而其它操作在表的另一端进行 ...
分类:
其他好文 时间:
2017-08-24 23:56:42
阅读次数:
223
题目描述: arr1 和 arr2 长度都为N 求两个数组中所有数的上中位数 要求 时间复杂度 O(logN) 额外空间复杂度O(1) 这道题目的方法比较好玩: 这两个数组如下表示: arr1[start1....end1] arr2[start2...end2] 如果start1==start2 ...
分类:
编程语言 时间:
2017-08-23 11:54:33
阅读次数:
137