【Java每日一题,优先队列简单题】数组修改

简介: 【Java每日一题,优先队列简单题】数组修改
+关注继续查看

Introduction

给你一个整数数组 nums 和一个整数 k ,按以下方法修改该数组:


选择某个下标 i 并将 nums[i] 替换为 -nums[i] 。


重复这个过程恰好 k 次。可以多次选择同一个下标 i 。


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


Input

第一行输入两个正整数n(数组长度),k(翻转次数)。


随后输入n个整数,即给定数组nums。


Output

输出翻转完毕的最大和。


Sample

input

3 1
4 2 3

output

5

Solution

import java.util.PriorityQueue;
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner s=new Scanner(System.in);
        int n=s.nextInt();
        int k=s.nextInt();
        PriorityQueue<Integer> queue=new PriorityQueue();
        for(int i=0;i<n;i++){
            queue.offer(s.nextInt());
        }
        while (k>0){
            int num=queue.poll();
            if(num<0){
                queue.offer(-num);
            }else {
                if(k%2==0){
                    queue.offer(num);
                }else {
                    queue.offer(-num);
                }
            }
            k--;


        }
        int sum=0;
        while (!queue.isEmpty()){
            sum+=queue.poll();
        }
        System.out.println(sum);

    }
}

Experience

总体上没什么难度,第一次使用java 的优先队列,PriorityQueue。之后会用了

相关文章
|
10天前
|
存储 机器学习/深度学习 算法
Java数组
Java数组
47 0
|
10天前
|
Java API
【零基础学Java】—数组工具类Arrays(十七)
【零基础学Java】—数组工具类Arrays(十七)
|
10天前
|
Java 索引
【零基础学Java】—数组(五)
【零基础学Java】—数组(五)
|
10天前
|
存储 机器学习/深度学习 Java
Java学习 9.Java-数组 讲解及习题
Java学习 9.Java-数组 讲解及习题
50 0
|
10天前
|
Java
Java学习 10.Java-数组习题
Java学习 10.Java-数组习题
50 0
|
20天前
|
Java
java 数组 切片
java 数组 切片
18 0
|
20天前
|
Java
java 打印数组
java 打印数组
18 0
|
28天前
|
存储 机器学习/深度学习 Java
Java数组的定义与使用
Java数组的定义与使用
35 0
|
1月前
|
存储 Java 索引
[正式学习java②]——数组的基本使用,java内存图与内存分配
[正式学习java②]——数组的基本使用,java内存图与内存分配
|
1月前
|
搜索推荐 Java
用java写一下冒泡排序算法,数组为12,14,13,15,11
用java写一下冒泡排序算法,数组为12,14,13,15,11
13 1
相关产品
云迁移中心
推荐文章
更多