桶排序
摘要:桶排序的基本思想是:把数组 arr 划分为n个大小相同子区间(桶),每个子区间各自排序,最后合并。计数排序是桶排序的一种特殊情况,可以把计数排序当成每个桶里只有一个元素的情况。 针对输入数据均匀分布的特点,因此将数据分布的区间可以均匀分为n个子区间。那么就有: max - min = n * wid
阅读全文
给定两个数组,这两个数组是排序好的,让你求这两个数组合到一起之后第K大的数。
摘要:题目:给定两个数组,这两个数组是排序好的,让你求这两个数组合到一起之后第K大的数。 解题思路: 首先取得数组a的中位数a[aMid],然后在b中二分查找a[aMid],得到b[bMid],b[bSt]到b[bMid]的数小于等于a[aMid],b[bMid+1]到b[bEd]大于等于a[aMid],
阅读全文
最长递增子串的长度
摘要:def binary_search(nums,key): if len(nums)<1: return -1 high=len(nums)-1 low=0 while low<=high: mid=(low+high)//2 if low<=high and nums[mid]>key: high=
阅读全文
复杂链表的复制
摘要:解题思路:思路:第一步在原链表的基础上复制节点,将节点复制在原节点的后面。第二步复制随机节点。 第三步将新旧链表分离。 代码如下:
阅读全文
二叉排序数转化双向链表
摘要:解题思路:中序遍历是有序的。使用了一个指针来保存链表的最后的节点。每次中序遍历到了根节点,就把根节点添加到了中序遍历的链表的末尾。这样遍历结束就能得到了一个中序有序的链表。最后再利用末尾指针逆序找到头结点即可。 代码如下:
阅读全文
字符串的全排列
摘要:解体思路::将求字符串的全排列分解为两步: 第一步是确定第一个位置的字符,就是第一个位置与后边的所有字符进行交换。 第二步,就是对除了第一个位置的后边所有位置的字符进行相同处理;直至剩下一个字符,打印; 代码如下:
阅读全文
合并k个有序数组
摘要:给定K个有序数组,每个数组有n个元素,想把这些数组合并成一个有序数组 可以利用最小堆完成,时间复杂度是O(nklogk),具体过程如下: 创建一个大小为n*k的数组保存最后的结果创建一个大小为k的最小堆,堆中元素为k个数组中的每个数组的第一个元素重复下列步骤n*k次:每次从堆中取出最小元素(堆顶元素
阅读全文
LeetCode子集问题
摘要:给定一组不含重复元素的整数数组 nums,返回该数组所有可能的子集(子集当中不包括重复的元素) 代码如下: 输出如下: 给定一组不含重复元素的整数数组 nums,返回该数组所有可能的子集(子集当中包括重复的元素) 代码如下: 输出如下:
阅读全文
链表快速排序
摘要:class Node: def __init__(self, x, next=None): self.value=x self.next=next def Qsort(head, tail): if head==None or tail==None or head==tail: return first=head ...
阅读全文
树的非递归遍历
摘要:def pre_order_stack(self,root): #堆栈实现前序遍历(非递归) if not root: return myStack = [] node = root while myStack or node: while node: #从...
阅读全文
快速排序非递归实现
摘要:def quick_sort(arr): ''''' 模拟栈操作实现非递归的快速排序 ''' if len(arr) index + 1: stack.append(r) stack.append(index + 1) def partition(arr, start, end): # 分区操作,返回基...
阅读全文
python实现图的遍历(递归和非递归)
摘要:class graph: def __init__(self,value): self.value=value self.neighbors=None # 图的广度优先遍历 # 1.利用队列实现 # 2.从源节点开始依次按照宽度进队列,然后弹出 # 3.每弹出一个节点,就把该节点所有没有进过队列的邻接点放入队列 # 4.直到队列变空 from queu...
阅读全文
2018秋招360算法方向在线笔试题
摘要:第一题: 代码如下: 第二题: 代码如下: 第三题: 代码如下: 完结
阅读全文
堆排序python实现
摘要:def MAX_Heapify(heap,HeapSize,root):#在堆中做结构调整使得父节点的值大于子节点 left = 2*root+1 right = left + 1 larger = root if left < HeapSize and heap[larger] < heap[left]: larger = left if...
阅读全文
2018秋招快手在线笔试编程题
摘要:运行如下: 第二题: 代码如下: 运行如下:
阅读全文
2018网易数据挖掘方向在线笔试题
摘要:第一题:斑马条纹,题目如下图. 代码如下: 第二题:住房子:题目如下 代码如下: 运行如下: 第三题:题目如下。 代码如下: 运行如下:
阅读全文
秋招在线笔试题
摘要:一层楼共有n级台阶,一次可以上至少1级但是不超过m级台阶,求有多少种不同的上楼方案数。 代码如下: 输入输出:
阅读全文
2018美团机器学习方向在线笔试编程题
摘要:第一题:无向图 代码如下: 运行结果: 第二题:字符串: # 思路:确定填充每相邻K个0得到的总长度 代码如下: 运行:
阅读全文