热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

通过在最少操作次数下将K减少到0来打印字典最小数组

通过在最少操作次数下将K减少到0来打印字典最小数组原文:

通过在最少操作次数下将 K 减少到 0 来打印字典最小数组

原文:https://www . geeksforgeeks . org/print-按字典顺序-最小数组-最小运算数中的 k 减 0/

给定一个数组 arr[] 和一个整数 K,的任务是通过执行以下操作将 K 的值减少到 0 。一个操作定义为选择 2 索引 i,j 并从 arri中减去 arr[i]K(即 X = min(arr[i],K) 的最小值,并将最小值加到arrj【T21 请注意数组arr【】的元素不能为负。

示例:

输入: N = 4,K = 2,arr[] = {4,3,2,1}
输出: 2 2 3 3
解释:
操作 1:选择指数 03、然后减去 arr0K 的最小值现在,修改后的数组是{2,3,2,3}
现在,对修改后的数组进行排序并打印出来。

输入: N = 3,K = 15,arr[] = {1,2,3}
输出: 0 0 6
解释:
操作 1:选择指数 02、然后减去 arr0K(= 11)现在修改后的数组是{0,2,4}。
操作 2:选择指数 12、然后从 arr[1] 中减去 arr1K(=15) 的最小值,即 arr1 中的 arr2。现在修改后的数组是{0,0,6}。
现在,对修改后的数组进行排序并打印。

方法:这个问题可以通过迭代数组arr【】来解决。按照以下步骤解决问题:


  • 使用变量 i 迭代范围【0,N-1】,并执行以下步骤:

    • 如果 arr[i] 小于 K,则采取以下步骤。

    • 从变量 K 中减去arr【I】,将arr【I】的值加到arr【n-1】上,将arr【I】的值设置为 0。****

    • 否则,从 arr[i]的值中减去 KK 的值加到 arr[n-1] 并将 K 的值设置为 0 ,断开回路。



  • 整理阵T4【arr】。

  • 执行上述步骤后,打印数组arr【】的元素。

下面是上述方法的实现:

C++

// C++ program for the above approach.
#include
using namespace std;
// Function to find the resultant array.
void solve(int n, int k, int arr[])
{
    for (int i = 0; i         // checking if aith value less than K
        if (arr[i]         {
            // substracting ai value from K
            k = k - arr[i];
            // Adding ai value to an-1
            arr[n - 1]
                = arr[n - 1]
                  + arr[i];
            arr[i] = 0;
        }
        // if arr[i] value is greater than  K
        else {
            arr[i] = arr[i] - k;
            arr[n - 1] = arr[n - 1] + k;
            k = 0;
        }
    }
    // sorting the given array
    // to know about this function
    // check gfg stl sorting article
    sort(arr, arr + n);
    // Displaying the final array
    for (int i = 0; i         cout <}
// Driver code
int main()
{
    int N = 6;
    int K = 2;
    int arr[N] = { 3, 1, 4, 6, 2, 5 };
    solve(N, K, arr);
    return 0;
}

Java 语言(一种计算机语言,尤用于创建网站)

// Java program for the above approach
import java.io.*;
import java.util.Arrays;
class GFG
{
  // Function to find the resultant array.
static void solve(int n, int k, int arr[])
{
    for (int i = 0; i         // checking if aith value less than K
        if (arr[i]         {
            // substracting ai value from K
            k = k - arr[i];
            // Adding ai value to an-1
            arr[n - 1]
                = arr[n - 1]
                  + arr[i];
            arr[i] = 0;
        }
        // if arr[i] value is greater than  K
        else {
            arr[i] = arr[i] - k;
            arr[n - 1] = arr[n - 1] + k;
            k = 0;
        }
    }
    // sorting the given array
    // to know about this function
    // check gfg stl sorting article
    Arrays.sort(arr);
    // Displaying the final array
    for (int i = 0; i         System.out.print( arr[i] + " ");
}
// Driver code
    public static void main (String[] args) {
         int N = 6;
    int K = 2;
    int arr[] = { 3, 1, 4, 6, 2, 5 };
    solve(N, K, arr);
    }
}
// This code is contributed by Potta Lokesh

Python 3

# Python program for the above approach.
# Function to find the resultant array.
def solve( n,  k,  arr):
    for i in range(n-1):
        # checking if aith value less than K
        if (arr[i]             # substracting ai value from K
            k = k - arr[i]
            # Adding ai value to an-1
            arr[n - 1] = arr[n - 1] + arr[i]
            arr[i] = 0
        # if arr[i] value is greater than  K
        else:
            arr[i] = arr[i] - k
            arr[n - 1] = arr[n - 1] + k
            k = 0
    # sorting the given array
    # to know about this function
    # check gfg stl sorting article
    arr.sort()
    # Displaying the final array
    for i in range(n):
        print(arr[i], end = " ")
# Driver code
N = 6
K = 2
arr = [ 3, 1, 4, 6, 2, 5 ]
solve(N, K, arr)
# This code is contributed by shivanisinghss2110

C

// C# program for the above approach
using System;
public class GFG
{
  // Function to find the resultant array.
  static void solve(int n, int k, int []arr)
  {
    for (int i = 0; i       // checking if aith value less than K
      if (arr[i]       {
        // substracting ai value from K
        k = k - arr[i];
        // Adding ai value to an-1
        arr[n - 1]
          = arr[n - 1]
          + arr[i];
        arr[i] = 0;
      }
      // if arr[i] value is greater than  K
      else {
        arr[i] = arr[i] - k;
        arr[n - 1] = arr[n - 1] + k;
        k = 0;
      }
    }
    // sorting the given array
    // to know about this function
    // check gfg stl sorting article
    Array.Sort(arr);
    // Displaying the readonly array
    for (int i = 0; i       Console.Write( arr[i] + " ");
  }
  // Driver code
  public static void Main(String[] args)
  {
    int N = 6;
    int K = 2;
    int []arr = { 3, 1, 4, 6, 2, 5 };
    solve(N, K, arr);
  }
}
// This code is contributed by shikhasingrajput

java 描述语言


Output

1 1 2 4 6 7

时间复杂度: O(Nlog(N))*
辅助空间: O(1)


推荐阅读
  • 本题要求在一组数中反复取出两个数相加,并将结果放回数组中,最终求出最小的总加法代价。这是一个经典的哈夫曼编码问题,利用贪心算法可以有效地解决。 ... [详细]
  • 本题探讨如何在两个长度为 n 的整数序列中,找到它们的最长公共子序列(LCS)。题目保证第一个序列中的元素各不相同。我们将深入分析并提供一种高效的求解方法。 ... [详细]
  • java文本编辑器,java文本编辑器设计思路
    java文本编辑器,java文本编辑器设计思路 ... [详细]
  • Chapter11&12:DefocusBlur&FinalScene在Camera.h中修改如下:#pragmaonce#define_USE ... [详细]
  • YB02 防水车载GPS追踪器
    YB02防水车载GPS追踪器由Yuebiz科技有限公司设计生产,适用于车辆防盗、车队管理和实时追踪等多种场合。 ... [详细]
  • 本文详细介绍了Java中的`ByteArrayInputStream`和`ByteArrayOutputStream`,包括它们的基本概念、工作原理及具体应用实例。`ByteArrayInputStream`用于处理内存中的字节数组,而`ByteArrayOutputStream`则用于将数据写入内存中的字节数组。 ... [详细]
  • 本文介绍了一个项目中如何在Windows平台上实现多声道音频数据的采集,特别是针对DANTE音频接口的8路立体声音频通道。文章详细描述了使用Windows底层音频API进行音频采集的方法,并提供了一个具体的实现示例。 ... [详细]
  • 本文探讨了符号三角形问题,该问题涉及由相同数量的“+”和“-”符号组成的三角形。通过递归回溯法,可以有效地搜索并计算符合条件的符号三角形的数量。 ... [详细]
  • 本文详细探讨了Java中的ClassLoader类加载器的工作原理,包括其如何将class文件加载至JVM中,以及JVM启动时的动态加载策略。文章还介绍了JVM内置的三种类加载器及其工作方式,并解释了类加载器的继承关系和双亲委托机制。 ... [详细]
  • 本文探讨了如何通过一系列技术手段提升Spring Boot项目的并发处理能力,解决生产环境中因慢请求导致的系统性能下降问题。 ... [详细]
  • cJinja:C++编写的轻量级HTML模板引擎
    本文介绍了cJinja,这是一个用C++编写的轻量级HTML模板解析库。它利用ejson来处理模板中的数据替换(即上下文),其语法与Django Jinja非常相似,功能强大且易于学习。 ... [详细]
  • 本文详细介绍了Java中的注解功能,包括如何定义注解类型、设置注解的应用范围及生命周期,并通过具体示例展示了如何利用反射机制访问注解信息。 ... [详细]
  • 本文介绍了在MacOS上通过Homebrew安装Anaconda3,并配置环境变量以实现不同Python版本之间的快速切换。同时,提供了详细的步骤来创建和管理多个Python环境。 ... [详细]
  • 利用jstack进行死锁检测与线程堆栈分析
    本文介绍了如何使用jstack工具进行Java应用中的死锁检测及高CPU使用率线程的堆栈分析,帮助开发者快速定位并解决性能瓶颈。 ... [详细]
  • ▶书中第四章部分程序,包括在加上自己补充的代码,有边权有向图的邻接矩阵,FloydWarshall算法可能含负环的有边权有向图任意两点之间的最短路径●有边权有向图的邻接矩阵1 ... [详细]
author-avatar
亲爱的jackvan叔叔
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有