算法复习(1)-K 次取反后最大化的数组和

题目:

K 次取反后最大化的数组和

给定一个整数数组 A,我们只能用以下方法修改该数组:我们选择某个个索引 i 并将 A[i] 替换为 -A[i],然后总共重复这个过程 K 次。(我们可以多次选择同一个索引 i。)

来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/maximize-sum-of-array-after-k-negations

解:

分析例子:


image.png

1.每次找到最小的数的位置
2.反转最小的数

实现

package K次反转取最大值;

/**
 * @Description:
 * @Author: kai.yang
 * @Date: 2019-11-02 09:38
 */
public class Test {

    /**
     * 找到最小的index
     */
    public  int getIndexs(int[] datas) {
        int temp = datas[0];
        int index = -1;
        if (datas == null || datas.length == 0) {
            return index;
        }
        for (int i = 0; i < datas.length; i++) {
            if (datas[i] <= temp) {
                temp = datas[i];
                index = i;
            }
        }
        return index;
    }

    /**
     * 反转最小的数
     * @param datas
     * @param minIndex
     * @return
     */
    public  int[] changeMin(int[] datas, int minIndex) {
        datas[minIndex] = -datas[minIndex];
        return datas;
    }


    /**
     * 求最终和
     * @param datas
     * @param k
     * @return
     */
    public  int sumMax(int[] datas, int k) {
        for (int i = 0; i < k; i++) {
            datas = changeMin(datas, getIndexs(datas));
        }
        int sum = 0;
        for (int i : datas) {
             sum += i;
        }
        return sum;

    }

    public static void main(String[] args) {
        int[] datas = new int[]{1, 2, 3, 4, 5, -1, 4, 3, -9, 4};
        Test test=new Test();
        System.out.println("最终结果=" + test.sumMax(datas, 6));
    }

}

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 在C语言中,五种基本数据类型存储空间长度的排列顺序是: A)char B)char=int<=float C)ch...
    夏天再来阅读 8,791评论 0 2
  • 基础篇NumPy的主要对象是同种元素的多维数组。这是一个所有的元素都是一种类型、通过一个正整数元组索引的元素表格(...
    oyan99阅读 10,553评论 0 18
  • 数组暂存 238. Product of Array Except Self https://leetcode.c...
    西部小笼包阅读 3,273评论 0 0
  • 数组是最简单的数据结构,占据连续内存并且按顺序存储。 以下是与数组有关的算法题目。 (1)查询数组中重复数字 算法...
    顽皮的石头7788121阅读 6,353评论 0 0
  • 上周五再访开言英语Openlanguage,见到女主播 Jenny,聊了许久关于语言学习的内容。 以下内容根据手机...
    麦子程阅读 31,255评论 2 4