CS-Wiki CS-Wiki
Home
知识体系总览
  • 数据结构与算法
  • 计算机网络
  • 操作系统
  • MySQL
  • Redis
  • 设计模式
  • Java 基础
  • Java 集合
  • Java 并发
  • Java 虚拟机
  • Spring
  • Kafka
  • 校招扫盲
  • 项目推荐
  • 唠唠嗑儿
  • 读书笔记
归档
GitHub (opens new window)
Home
知识体系总览
  • 数据结构与算法
  • 计算机网络
  • 操作系统
  • MySQL
  • Redis
  • 设计模式
  • Java 基础
  • Java 集合
  • Java 并发
  • Java 虚拟机
  • Spring
  • Kafka
  • 校招扫盲
  • 项目推荐
  • 唠唠嗑儿
  • 读书笔记
归档
GitHub (opens new window)
  • 刷题模板汇总
  • 一些刷题小技巧
  • 整数 and 位运算

  • 数组

    • 数组理论基础
    • 第 k 个缺失的正整数
    • 下一个排列
    • 螺旋矩阵II
    • 螺旋矩阵
    • 顺时针旋转矩阵
    • 左右两边子数组的和相等
    • 使数组唯一的最小增量
    • 求 a[i]+a[j]+i-j 的最大值
      • 📃 题目描述
      • 🔔 解题思路
      • 💥 复杂度分析
  • 链表

  • 哈希表

  • 字符串

  • 栈

  • 队列

  • 二叉树

  • 前缀树

  • 二分查找

  • 双指针法

  • 区间求和问题

  • 排序

  • 回溯算法

  • 贪心算法

  • 动态规划

  • 图

  • 数学

  • 自动机

  • 海量数据和空间限制

  • 05-数据结构与算法
  • 数组
小牛肉
2022-09-20
目录

求 a[i]+a[j]+i-j 的最大值

# 📃 题目描述

题目链接:没有,我自己做笔试的时候遇到的问题

一个无序数组,求 a[i] +a[j] +i - j 的最大值,要求 i < j

# 🔔 解题思路

正确思路是把 a[i]+a[j]+i-j 拆成 (a[i]+i)+(a[j]-j)。

  • 直接遍历一遍数组,找到每个 j 左边的最大 a[i] + i,这样对于 j 来说,就是最大的 a[i] + i + a[j] - j

时间复杂度:O(n)

public class Main3 {

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        long[] nums = new long[n];
        for (int i = 0; i < n; i ++) {
            nums[i] = sc.nextLong();
        }
        System.out.println(func(n, nums));

    }

    private static long func(int n, long[] nums) {
        long max = 0;

        // nums[j] 左边的(不包括 nums[j] 本身) nums[i] + i 的最大值
        long[] maxLeftNum = new long[n];
        maxLeftNum[1] = nums[0];

        for (int i = 2; i < n; j ++) {
            if (nums[i - 1] + i - 1) > maxLeftNum[i - 1]) {
                maxLeftNum[i] = nums[i - 1] + i - 1;
            }
            else {
                maxLeftNum[i] = maxLeftNum[i - 1];
            }
        }

        for (int j = 1; j < n; j ++) {
            long sum = nums[j] - j + maxLeftNum[j];
            max = Math.max(sum, max);
        }

        return max;
    }
}

# 💥 复杂度分析

  • 空间复杂度:
  • 时间复杂度:

🎁 公众号

各位小伙伴大家好呀,叫我小牛肉就行,目前在读东南大学硕士,上方扫码关注公众号「飞天小牛肉」,与你分享我的成长历程与技术感悟~

帮助小牛肉改善此页面 (opens new window)
Last Updated: 2023/02/16, 11:27:10
使数组唯一的最小增量
链表理论基础

← 使数组唯一的最小增量 链表理论基础→

最近更新
01
02
线上环境 CPU 使用率飙升如何快速排查?
03-05
03
面试官再跟你说中国没有根服务器,雪人计划让他了解下
02-23
更多文章>
Theme by Vdoing | Copyright © 2019-2023 飞天小牛肉 | 皖ICP备2022008966号
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式