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

相关文章

Java中的雪花算法Snowflake解析与实践技巧

《Java中的雪花算法Snowflake解析与实践技巧》本文解析了雪花算法的原理、Java实现及生产实践,涵盖ID结构、位运算技巧、时钟回拨处理、WorkerId分配等关键点,并探讨了百度UidGen... 目录一、雪花算法核心原理1.1 算法起源1.2 ID结构详解1.3 核心特性二、Java实现解析2.

SpringBoot中4种数据水平分片策略

《SpringBoot中4种数据水平分片策略》数据水平分片作为一种水平扩展策略,通过将数据分散到多个物理节点上,有效解决了存储容量和性能瓶颈问题,下面小编就来和大家分享4种数据分片策略吧... 目录一、前言二、哈希分片2.1 原理2.2 SpringBoot实现2.3 优缺点分析2.4 适用场景三、范围分片

Redis过期删除机制与内存淘汰策略的解析指南

《Redis过期删除机制与内存淘汰策略的解析指南》在使用Redis构建缓存系统时,很多开发者只设置了EXPIRE但却忽略了背后Redis的过期删除机制与内存淘汰策略,下面小编就来和大家详细介绍一下... 目录1、简述2、Redis http://www.chinasem.cn的过期删除策略(Key Expir

利用Python实现时间序列动量策略

《利用Python实现时间序列动量策略》时间序列动量策略作为量化交易领域中最为持久且被深入研究的策略类型之一,其核心理念相对简明:对于显示上升趋势的资产建立多头头寸,对于呈现下降趋势的资产建立空头头寸... 目录引言传统策略面临的风险管理挑战波动率调整机制:实现风险标准化策略实施的技术细节波动率调整的战略价

使用雪花算法产生id导致前端精度缺失问题解决方案

《使用雪花算法产生id导致前端精度缺失问题解决方案》雪花算法由Twitter提出,设计目的是生成唯一的、递增的ID,下面:本文主要介绍使用雪花算法产生id导致前端精度缺失问题的解决方案,文中通过代... 目录一、问题根源二、解决方案1. 全局配置Jackson序列化规则2. 实体类必须使用Long封装类3.

Springboot实现推荐系统的协同过滤算法

《Springboot实现推荐系统的协同过滤算法》协同过滤算法是一种在推荐系统中广泛使用的算法,用于预测用户对物品(如商品、电影、音乐等)的偏好,从而实现个性化推荐,下面给大家介绍Springboot... 目录前言基本原理 算法分类 计算方法应用场景 代码实现 前言协同过滤算法(Collaborativ

Redis中6种缓存更新策略详解

《Redis中6种缓存更新策略详解》Redis作为一款高性能的内存数据库,已经成为缓存层的首选解决方案,然而,使用缓存时最大的挑战在于保证缓存数据与底层数据源的一致性,本文将介绍Redis中6种缓存更... 目录引言策略一:Cache-Aside(旁路缓存)策略工作原理代码示例优缺点分析适用场景策略二:Re

SpringBoot基于配置实现短信服务策略的动态切换

《SpringBoot基于配置实现短信服务策略的动态切换》这篇文章主要为大家详细介绍了SpringBoot在接入多个短信服务商(如阿里云、腾讯云、华为云)后,如何根据配置或环境切换使用不同的服务商,需... 目录目标功能示例配置(application.yml)配置类绑定短信发送策略接口示例:阿里云 & 腾

redis过期key的删除策略介绍

《redis过期key的删除策略介绍》:本文主要介绍redis过期key的删除策略,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录第一种策略:被动删除第二种策略:定期删除第三种策略:强制删除关于big key的清理UNLINK命令FLUSHALL/FLUSHDB命

SpringRetry重试机制之@Retryable注解与重试策略详解

《SpringRetry重试机制之@Retryable注解与重试策略详解》本文将详细介绍SpringRetry的重试机制,特别是@Retryable注解的使用及各种重试策略的配置,帮助开发者构建更加健... 目录引言一、SpringRetry基础知识二、启用SpringRetry三、@Retryable注解