0402-1练习-分治策略-算法导论第三版

2024-05-24 04:20

本文主要是介绍0402-1练习-分治策略-算法导论第三版,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

4.1-1 所有数组元素为负

解答:所有元素为负数时,FIND—MAXiMUM-SUBARRAY 返回只有一个最小元素的数组和该元素对应的索引。

4.1-4 允许结果为空子数组

假定修改最大子数组问题的定义,允许结果为空子数组,其和为0。你应该如何修改现有的算法,使他们能运行空子数组为最终结果。

解答:判断如果原算法结果为负数,返回空数组。

4.1-5 最大子数组的线性时间算法

使用如下的思想为最子数组问题设计一个非递归的、线性时间的算法。从数组的左边界开始,由左至右处理,记录到目前为止已经处理过的最大子数组。若已知 A [ 1 ⋯ j ] A[1\cdots j] A[1j]的最大子数组,基于如下性质将解扩展为 A [ 1 ⋯ j + 1 ] A[1\cdots j+1] A[1j+1]的最大子数组: A [ 1 ⋯ j + 1 ] A[1\cdots j+1] A[1j+1]的最大子数组要么是 A [ 1 ⋯ j ] A[1\cdots j] A[1j]的最大子数组,要么是某个子数组 A [ i ⋯ j + 1 ] ( 1 ≤ i ≤ j + 1 ) A[i\cdots j+1](1\le i\le j+1) A[ij+1](1ij+1)。在已知 A [ 1 ⋯ j ] A[1\cdots j] A[1j]的最大组数组的情况下,可以在线性时间内找出形如 A [ i ⋯ j + 1 ] A[i\cdots j+1] A[ij+1]的最大子数组。

package com.gaogzhen.introductiontoalgorithms3.divideconquer;import java.util.HashMap;
import java.util.Map;/*** @author gaogzhen* @date 2024/5/23 21:05*/
public class MaxSubarrayIterative {public static Map<String, Integer> maxSubarrayIterative(int[] arr) {int n = arr.length;int maxSum = Integer.MIN_VALUE;int sum = Integer.MIN_VALUE;int low =0;int high = 0;int currentLow = 0;int currentHigh = 0;for (int i = 0; i < n; i++) {currentHigh = i;if (sum > 0) {sum += arr[i];} else {currentLow = i;sum = arr[i];}if (sum >  maxSum) {maxSum = sum;low = currentLow;high = currentHigh;}}Map<String, Integer> ret = new HashMap<>(3);ret.put("low", low);ret.put("high", high);ret.put("sum", maxSum);return ret;}public static void main(String[] args) {int[] arr = {-13, -3, -25, -20, -3, -16, -23, -18, -20, -1, -12, -5, -22, -15, -4, -7};Map<String, Integer> map = maxSubarrayIterative(arr);System.out.println(map);}
}

结语

欢迎小伙伴一起学习交流,需要啥工具或者有啥问题随时联系我。

❓QQ:806797785

⭐️源代码地址:https://gitee.com/gaogzhen/algorithm

[1]算法导论(原书第三版)/(美)科尔曼(Cormen, T.H.)等著;殷建平等译 [M].北京:机械工业出版社,2013.1(2021.1重印).p42

这篇关于0402-1练习-分治策略-算法导论第三版的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/997353

相关文章

Deepseek使用指南与提问优化策略方式

《Deepseek使用指南与提问优化策略方式》本文介绍了DeepSeek语义搜索引擎的核心功能、集成方法及优化提问策略,通过自然语言处理和机器学习提供精准搜索结果,适用于智能客服、知识库检索等领域... 目录序言1. DeepSeek 概述2. DeepSeek 的集成与使用2.1 DeepSeek API

Redis的数据过期策略和数据淘汰策略

《Redis的数据过期策略和数据淘汰策略》本文主要介绍了Redis的数据过期策略和数据淘汰策略,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一... 目录一、数据过期策略1、惰性删除2、定期删除二、数据淘汰策略1、数据淘汰策略概念2、8种数据淘汰策略

SpringBoot中的404错误:原因、影响及解决策略

《SpringBoot中的404错误:原因、影响及解决策略》本文详细介绍了SpringBoot中404错误的出现原因、影响以及处理策略,404错误常见于URL路径错误、控制器配置问题、静态资源配置错误... 目录Spring Boot中的404错误:原因、影响及处理策略404错误的出现原因1. URL路径错

Redis多种内存淘汰策略及配置技巧分享

《Redis多种内存淘汰策略及配置技巧分享》本文介绍了Redis内存满时的淘汰机制,包括内存淘汰机制的概念,Redis提供的8种淘汰策略(如noeviction、volatile-lru等)及其适用场... 目录前言一、什么是 Redis 的内存淘汰机制?二、Redis 内存淘汰策略1. pythonnoe

Python中的随机森林算法与实战

《Python中的随机森林算法与实战》本文详细介绍了随机森林算法,包括其原理、实现步骤、分类和回归案例,并讨论了其优点和缺点,通过面向对象编程实现了一个简单的随机森林模型,并应用于鸢尾花分类和波士顿房... 目录1、随机森林算法概述2、随机森林的原理3、实现步骤4、分类案例:使用随机森林预测鸢尾花品种4.1

Python 中 requests 与 aiohttp 在实际项目中的选择策略详解

《Python中requests与aiohttp在实际项目中的选择策略详解》本文主要介绍了Python爬虫开发中常用的两个库requests和aiohttp的使用方法及其区别,通过实际项目案... 目录一、requests 库二、aiohttp 库三、requests 和 aiohttp 的比较四、requ

Redis过期键删除策略解读

《Redis过期键删除策略解读》Redis通过惰性删除策略和定期删除策略来管理过期键,惰性删除策略在键被访问时检查是否过期并删除,节省CPU开销但可能导致过期键滞留,定期删除策略定期扫描并删除过期键,... 目录1.Redis使用两种不同的策略来删除过期键,分别是惰性删除策略和定期删除策略1.1惰性删除策略

不懂推荐算法也能设计推荐系统

本文以商业化应用推荐为例,告诉我们不懂推荐算法的产品,也能从产品侧出发, 设计出一款不错的推荐系统。 相信很多新手产品,看到算法二字,多是懵圈的。 什么排序算法、最短路径等都是相对传统的算法(注:传统是指科班出身的产品都会接触过)。但对于推荐算法,多数产品对着网上搜到的资源,都会无从下手。特别当某些推荐算法 和 “AI”扯上关系后,更是加大了理解的难度。 但,不了解推荐算法,就无法做推荐系

康拓展开(hash算法中会用到)

康拓展开是一个全排列到一个自然数的双射(也就是某个全排列与某个自然数一一对应) 公式: X=a[n]*(n-1)!+a[n-1]*(n-2)!+...+a[i]*(i-1)!+...+a[1]*0! 其中,a[i]为整数,并且0<=a[i]<i,1<=i<=n。(a[i]在不同应用中的含义不同); 典型应用: 计算当前排列在所有由小到大全排列中的顺序,也就是说求当前排列是第

csu 1446 Problem J Modified LCS (扩展欧几里得算法的简单应用)

这是一道扩展欧几里得算法的简单应用题,这题是在湖南多校训练赛中队友ac的一道题,在比赛之后请教了队友,然后自己把它a掉 这也是自己独自做扩展欧几里得算法的题目 题意:把题意转变下就变成了:求d1*x - d2*y = f2 - f1的解,很明显用exgcd来解 下面介绍一下exgcd的一些知识点:求ax + by = c的解 一、首先求ax + by = gcd(a,b)的解 这个