博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
1005. K 次取反后最大化的数组和 VS 1002.查找常用字符
阅读量:5006 次
发布时间:2019-06-12

本文共 1010 字,大约阅读时间需要 3 分钟。

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

以这种方式修改数组后,返回数组可能的最大和。

示例 1:

输入:A = [4,2,3], K = 1输出:5解释:选择索引 (1,) ,然后 A 变为 [4,-2,3]。

示例 2:

输入:A = [3,-1,0,2], K = 3输出:6解释:选择索引 (1, 2, 2) ,然后 A 变为 [3,1,0,2]。

示例 3:

输入:A = [2,-3,-1,5,-4], K = 2输出:13解释:选择索引 (1, 4) ,然后 A 变为 [2,3,-1,5,4]。

 

提示:

  1. 1 <= A.length <= 10000
  2. 1 <= K <= 10000
  3. -100 <= A[i] <= 100

 

/** * @param {number[]} A * @param {number} K * @return {number} */var largestSumAfterKNegations = function(A, K) {    A.sort((a, b)=> a-b);    let a=0;    A.forEach(item=>{       if(item<=0) a++;     })    if(a<=K){        A = A.map(a=>Math.abs(a));        if((K-a)%2){            A.sort((a, b)=> a-b);            A[0] = -A[0];        }        return A.reduce((init, val)=>init+val)    } else {        for(let i=0; i
init+val, 0); } };

 

 

 

想法:

开始想的是要在[0, A.length-1]里面取K次,把所有的可能遍历一遍,然后Math.max();其实也想到排一下序也可以ok(也许排下序列,真的会有新的想法)。还想了,要不也拼一下字符串然后eval。

转载于:https://www.cnblogs.com/zhangzs000/p/10508403.html

你可能感兴趣的文章
C# ~ 从 XML 到 Linq 到 Linq to XML
查看>>
常用汉字的五笔拆法
查看>>
1044: [HAOI2008]木棍分割 - BZOJ
查看>>
资源:数据库原理
查看>>
后进先出 stack、 先进先出Queue
查看>>
来常工富藤的第一天
查看>>
你想到了,就有别人去实现,那你为什么不去实现呢
查看>>
OSI与TCP/IP模型
查看>>
【IT笔试面试题整理】丑数
查看>>
敏捷开发一千零一问系列之六:业务人员怎样参与开发?
查看>>
双向链表
查看>>
RAL调用
查看>>
freemarker 设置文本内容超过一定长度 用省略号代替
查看>>
jQuery.reveal弹出层使用
查看>>
学习spring in action 第一天
查看>>
asp.net上传功能(单文件,多文件,自定义生成缩略图,水印)
查看>>
bash: ./t.sh:/bin/bash^M:损坏的解释器: 没有那个文件或目录
查看>>
云计算设计模式(八)——外部配置存储模式
查看>>
C++ Primer 有感(复制控制)
查看>>
[转]深入理解闭包(一)
查看>>