首页 > 编程语言 >【数据结构与算法面试题】子数组的最大和

【数据结构与算法面试题】子数组的最大和

时间:2023-06-14 18:39:17浏览次数:53  
标签:面试题 int 最大值 算法 length 数据结构


题目来源“数据结构与算法面试题80道”。

【数据结构与算法面试题】子数组的最大和_遍历数组

问题分析:在数组的每一个位置处保存当前的最大值,当前的最大值组成为:

【数据结构与算法面试题】子数组的最大和_解决方案_02

解决方案:

int get_max_subarray(int *a, int length, bool &is_array_ok){
	if (NULL == a || length <= 0){
		is_array_ok = false;
		return 0;
	}

	int *p_h_a = (int *)malloc(sizeof(int) * length);
	// 遍历数组
	int max_num = 0;
	for (int i = 0; i < length; i++){
		if (i == 0 || (i > 0 && p_h_a[i-1] <= 0)){
			p_h_a[i] = a[i];
		}else{
			p_h_a[i] = p_h_a[i-1] + a[i];
		}
		if (max_num < p_h_a[i]) max_num = p_h_a[i];
	}
	free(p_h_a);
	
	is_array_ok = true;
	return max_num;
}


标签:面试题,int,最大值,算法,length,数据结构
From: https://blog.51cto.com/u_16161414/6479817

相关文章

  • 简单易学的机器学习算法——K-Means++算法
    一、K-Means算法存在的问题由于K-Means算法的简单且易于实现,因此K-Means算法得到了很多的应用,但是从K-Means算法的过程中发现,K-Means算法中的聚类中心的个数k需要事先指定,这一点对于一些未知数据存在很大的局限性。其次,在利用K-Means算法进行聚类之前,需要初始化k个聚类中心,在上述的......
  • 数据结构和算法——二叉排序树
    一、二叉排序树对于无序的序列“62,58,88,47,73,99,35,51,93,29,37,49,56,36,48,50”,是否存在一种高效的查找方案,使得能够快速判断在序列中是否存在指定的数值?二叉排序树是一种简单,高效的数据结构。二叉排序树,又称为二叉查找树。二叉排序树或者是一棵空树,或者是具有以下性质的二叉树:若其左子树不为......
  • 挑战数据结构和算法面试题——最大差值
    题目来自伯乐在线,欢迎有不同答案的同学来一起讨论。分析:基本方法是遍历数组,找到当前值前面所有数组元素的最小值。方法:intget_max_distance(int*a,constintn){intmax_distance=0;//纪录最大距离if(n==0)returnmax_distance;intmin=a[0];//纪录最小的......
  • 推荐算法——基于图的推荐算法PersonalRank算法
    一、推荐的概述在推荐系统中,通常是要向用户推荐商品,如在购物网站中,需要根据用户的历史购买行为,向用户推荐一些实际的商品;如在视频网站中,推荐的则是不同的视频;如在社交网站中,推荐的可能是用户等等,无论是真实的商品,还是视频,再或者是用户,都可以假设成一种物品,如下图所示:(图片来自参考......
  • 【数据结构与算法面试题】求和
    题目来源“数据结构与算法面试题80道”。问题分析:可以使用类的构造方法,在类的每次实例化对象时都会调用构造方法,那么只需要实例化n个对象,就会调用n次构造方法,这就模拟了循环的过程,此时,只需要有一个全局变量记录累加的值即可。方法:#include<stdio.h>classcalnum{ public: cal......
  • 专访快手传输算法负责人周超博士:LAS标准的推出离不开信念感
    6月21日,快手正式对外发布基于流式的直播多码率自适应标准LAS(LiveAdaptiveStreaming),用于提供低延迟、平滑、流畅的直播多码率体验。LAS的端到端解决方案同时开源,包括服务端、客户端、业界领先的多码率自适应算法等,从而帮助业界实现零门槛接入和使用LAS。图:《搏击俱乐部》采访专家:......
  • java面试算法:设计搜索输入框的输入提示功能
    我们使用搜索引擎时,需要在搜索框输入关键字,当你在框中输入头几个字符时,搜索框会出现一个下拉框,里面包含着以当前输入字符为前缀的字符串,如果里面包含你想要输入的内容,那么你就可以直接选取,而不必要把关键字的所有字符依次输入,这种功能极大的提高了搜索体验。本次算法题的题目是,你如......
  • 微软亚洲工程院面试题:寻找两个二叉树节点的最近祖先
    给定一颗二叉树,并指定二叉树中任意两个节点,要求找出这两个节点在二叉树中的最近祖先,假定二叉树每个节点都有一个指向其父节点的指针,图中没有画出来,要求算法的空间复杂度必须是O(1),时间复杂度为O(h)。例如给定下面二叉树:如果指定的两个节点是401和257,那么他们的最近祖先就是节点1......
  • 策略模式:整体替换算法
    策略模式是一种行为设计模式,它允许在运行时选择算法的行为。在策略模式中,我们定义了多个算法,并将每个算法封装在一个独立的类中(策略类),以便在运行时根据需要进行切换。这使得算法与调用其算法的客户端代码分离,从而实现了更高的灵活性和可维护性。主要实现方式:1策略接口->n*具......
  • 算法面试:根据前序遍历结果序列和中序遍历结果序列重构二叉树
    对不同结构的二叉树进行前序,后序或中序遍历时,得到的结果可以是相同的,例如:上面三种结构的二叉树在进行前序遍历时,得到的序列都是:{3,4,5},但如果给定两种遍历序列,例如再加上中序遍历序列:{4,3,5},那么二叉树的结构就可以唯一确定了,满足这两种遍历序列的二叉树只能是中间那颗二叉树。于......