给定两个有序单链表的头节点head1 和 head2 ,请合并两个有序链表,合并后的链表依然有序,并返回合并后链表的头节点 假设两个链表长度为M和N 直接给出时间复杂度为(M+N) 额外空间复杂度O(1) 1 如果两个链表中一个为空 则无需合并 返回另一个的链表头节点 2 比较head1 和 hea ...
分类:
编程语言 时间:
2017-09-11 21:05:30
阅读次数:
142
一、插入类排序 1.直接插入排序 思想:将第i个插入到前i-1个中的适当位置 时间复杂度:T(n) = O(n²)。 空间复杂度:S(n) = O(1)。 稳定性:稳定排序。 如果碰见一个和插入元素相等的,那么插入元素把想插入的元素放在相等元素的后面。 所以,相等元素的前后顺序没有改变,从原无序序列 ...
分类:
编程语言 时间:
2017-09-11 21:04:30
阅读次数:
191
给定一个无序单链表的头节点head,实现单链表的选择排序 要求额外空间复杂度O(1) 思路: 既然额外空间复杂度O(1),就不能把链表装进容器,排好序后再从新链接,而是要求面试者在原链表上利用有限几个变量完成选择排序的过程。 选择排序是从未排序的部分找到最小值,然后放到排好序部分的尾部。 1 开始时 ...
分类:
编程语言 时间:
2017-09-11 16:22:00
阅读次数:
114
1、冒泡排序 思想示例:相邻元素之间两两比较,小的放前面,大的继续与下一个比较 初始关键字序列: 34 46 23 15 80 67 29 27 (1) 34 23 15 46 67 29 27 [80] (2) 23 15 34 46 29 27 [67 80] (3) 15 23 34 29 2 ...
分类:
编程语言 时间:
2017-09-10 15:47:30
阅读次数:
224
给定一个无序整型数组arr,找到数组中未出现的最小正整数 解题思路非常好,需要好好学习一下,很逻辑 如果arr长度为N, 最优解可以做到时间复杂度O(N) 额外空间复杂度O(1) 1、遍历arr之前生成两个变量, l r 初始值 l=0 r=N 2、从左到右遍历arr,arr[l] 3、如果arr[ ...
分类:
编程语言 时间:
2017-09-09 12:56:40
阅读次数:
134
这道题为简单题 题目: 思路: 1、我的思路:首先利用广搜,保存每个节点值在列表中,然后两个for循环列表,使对应列表中的每个值变为题目要求的值,然后再将广搜的列表与节点值列表对应。 这种方法复杂,时间空间复杂度高,运行时还出现超时 2、大神的思路:利用递归。其实我最开始也是想用递归,但是没有找到转 ...
分类:
其他好文 时间:
2017-09-08 14:41:39
阅读次数:
187
排序算法是一个最基本的算法,经常会被问到,有些公司的面试也可能会考到,这里特意将所有的排序算法做一个总结 1. 冒泡排序 最基本的一个排序算法,总是将最大的往右进行冒泡,总是比较两个相邻的元素。 平均时间复杂度O(n^2),最好时间O(n),最坏时间O(n^2),空间复杂度O(1),不需要另外开辟空 ...
分类:
编程语言 时间:
2017-09-08 11:45:26
阅读次数:
155
概述 Java集合框架由Java类库的一系列接口、抽象类以及具体实现类组成。我们这里所说的集合就是把一组对象组织到一起,然后再根据不同的需求操纵这些数据。集合类型就是容纳这些对象的一个容器。也就是说,最基本的集合特性就是把一组对象放一起集中管理。根据集合中是否允许有重复的对象、对象组织在一起是否按某 ...
分类:
编程语言 时间:
2017-09-07 16:13:07
阅读次数:
235
虽然前端一般情况下并不需要计算算法复杂度,但了解一下还是相当有必要的 时间复杂度 1.时间频度 由于算法执行的时间无法计算,为评判算法执行工作量,将语句执行的次数称为时间频度,记为T(n) 2.时间复杂度 n称为问题的规模,当n不断变化时,T(n)也会不断变化,为了表示其呈现的规律,我们引入时间复杂 ...
分类:
编程语言 时间:
2017-09-06 19:44:49
阅读次数:
225
给定一个整型数组,找出主元素,它在数组中的出现次数严格大于数组元素个数的二分之一。 注意事项 You may assume that the array is non-empty and the majority number always exist in the array. You may a ...
分类:
其他好文 时间:
2017-09-05 20:52:02
阅读次数:
183