剑指offer
入海流_小东
这个作者很懒,什么都没留下…
展开
-
sizeof、strlen、size、length的区别
求数组或者字符串的长度sizeof与strlensizeof是运算符,是C语言中保留的关键字,它的参数类型多重多样,包括数组、指针、类型、对象、函数等,主要用来得到数据在内存中所占用的存储空间,以字节为单位来计数。而且在编译时已经计算出结果,因此不能用来返回动态分配控件的大小。如果想使用sizeof来计算数组元素的个数,那么可以用len=sizeof(array)/sizeof(array[0])的方式求得。strlen看名字就知道这个是求字符串相关的长度,它是函数,返回c风格字符串的长度。参数只能原创 2020-11-29 16:20:57 · 703 阅读 · 0 评论 -
用动态规划的方式求解连续子数组的最大和
题目:HZ偶尔会拿些专业问题来忽悠那些非计算机专业的同学。今天测试组开完会后,他又发话了:在古老的一维模式识别中,常常需要计算连续子向量的最大和,当向量全为正数的时候,问题很好解决。但是,如果向量中包含负数,是否应该包含某个负数,并期望旁边的正数会弥补它呢?例如:{6,-3,-2,7,-15,1,2,2},连续子向量的最大和为8(从第0个开始,到第3个为止)。给一个数组,返回它的最大连续子序列的和,你会不会被他忽悠住?(子向量的长度至少是1)分析:用array来表示数组,在这里的array[n]来表示原创 2020-11-29 01:43:32 · 337 阅读 · 0 评论 -
青蛙跳台阶及其变种类型(递归思想)
题目:一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)分析:青蛙的最后一跳可以分为两种情况:第一种是最后一跳只跳了一个台阶;第二种是最后一跳只跳了两个台阶。【最后一跳,不会影响前面的跳法总数】这句话的意思是:假如有n个台阶,跳法总数为f(n),通过上面分析可知,f(n)由两部分跳法组成:第一种是最后只能跳一个台阶,也就是前面跳了n-1个台阶。那么对于这种情况来说,最后跳的这一下,不会对前面n-1个台阶的跳法(f(n-1))产生影原创 2020-11-14 00:42:43 · 528 阅读 · 0 评论 -
二维数组中的元素查找(二分法的运用)
1、vector知识参考这篇博文,写得不错(https://blog.csdn.net/weixin_41743247/article/details/90635931)2、用vector来表示二维数组vector<vector > array(3);//定义了行数为3列数不定的二维数组array.size()//返回二维数组的行数array[0].size()//返回二维数组第一行的列数定义一个行列固定的二维vector数组例:vector<vector<int&原创 2020-11-06 01:21:04 · 664 阅读 · 0 评论 -
二分法(旋转数组)
1、先说二分法二分法只对有序数组有效!使用二分法需要四个参数:数组的起始值,数组的结尾值,数组的中位值,目标值。三种情况:中位值就是目标值:1 2 3 4 5 6 7目标值在中位值左侧:1 2 3 4 5 6 7目标值在中位值右侧:1 2 3 4 5 6 7将中位值与目标值做对比后,更新上面四个参数代码如下(摘自:https://mp.weixin.qq.com/s?__biz=MzIxMjE5MTE1Nw==&mid=2653198263&idx=2&sn=c071原创 2020-10-28 00:55:38 · 385 阅读 · 0 评论 -
用两个栈实现队列(队列、栈、链表)
题目要求:用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。分析:原创 2020-10-27 01:39:32 · 206 阅读 · 0 评论 -
贪心算法——青蛙跳阶梯(递归)
题目:一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法分析:设f[i] 表示 当前跳道第 i 个台阶的方法数。那么f[n]就是所求答案。假设现在已经跳到了第 n 个台阶,那么前一步可以从哪些台阶到达呢?如果上一步跳 1 步到达第 n 个台阶,说明上一步在第 n-1 个台阶。已知跳到第n-1个台阶的方法数为f[n-1]如果上一步跳 2 步到达第 n 个台阶,说明上一步在第 n-2 个台阶。已知跳到第n-2个台阶的方法数为f[n-2]。。原创 2020-10-22 01:08:03 · 992 阅读 · 0 评论