- 博客(5)
- 收藏
- 关注
原创 Divide Two Integers
从乘法、除法的定义可知最直观的思路就是循序减法,但是超时;因此,可以利用位运算,来代替乘法;class Solution {public: int divide(int dividend, int divisor) { // 此处强制装换(long long)必不可少,因为默认情况下,数字按照整型处理,因此-2147483648,若不加强制转化为long long处理的话,此处仍然
2016-12-01 00:42:12
446
原创 算法导论--最大子数组问题
暴力解决:int find_max_substr(const vector& vi,int& left, int& right){ int i = 0; for(auto it : vi) { vv[i][i] = it; ++i; } for(int length = 1;length
2015-06-30 17:14:15
582
原创 二分查找代码分析以及应用
首先说明一点,某些代码在边界条件存在细微差别,至于原理很多时候需要查找原始文献。我只是总结区别,比较记忆,原理在学会使用以后慢慢品味理解。或许某时刻就会茅塞顿开。二分查找的最简单代码:输入:A[start,start+1,......,end-1,end]输出:和val相等的元素的下标;假如不存在则输出-1;循环不变式:貌似是A[start]=val。int BIN_FIND_
2015-05-22 14:47:58
546
原创 归并算法
在算法导论中,归并算法划归到分治策略中讲述。基本思想就是将大的问题分成小的问题,然后分而治之。实现该算法,既可以采用递归函数;也可以由底向上,通过修改跨度来实现归并。下面就分别贴出这两种算法的简单实现。由于并没有对算法进行大规模的数据测试,所以错误之处望大家斧正。不管是递归还是直接归并,均需用到下述函数:函数的作用是将p到q位置以及q+1到r位置已经排好序的子数组合并为一个整体数组。v
2015-05-20 23:41:33
579
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人