热门标签 | 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)


推荐阅读
  • 目录实现效果:实现环境实现方法一:基本思路主要代码JavaScript代码总结方法二主要代码总结方法三基本思路主要代码JavaScriptHTML总结实 ... [详细]
  • Iamtryingtomakeaclassthatwillreadatextfileofnamesintoanarray,thenreturnthatarra ... [详细]
  • Java容器中的compareto方法排序原理解析
    本文从源码解析Java容器中的compareto方法的排序原理,讲解了在使用数组存储数据时的限制以及存储效率的问题。同时提到了Redis的五大数据结构和list、set等知识点,回忆了作者大学时代的Java学习经历。文章以作者做的思维导图作为目录,展示了整个讲解过程。 ... [详细]
  • 本文介绍了P1651题目的描述和要求,以及计算能搭建的塔的最大高度的方法。通过动态规划和状压技术,将问题转化为求解差值的问题,并定义了相应的状态。最终得出了计算最大高度的解法。 ... [详细]
  • 展开全部下面的代码是创建一个立方体Thisexamplescreatesanddisplaysasimplebox.#Thefirstlineloadstheinit_disp ... [详细]
  • 本文详细介绍了Java中vector的使用方法和相关知识,包括vector类的功能、构造方法和使用注意事项。通过使用vector类,可以方便地实现动态数组的功能,并且可以随意插入不同类型的对象,进行查找、插入和删除操作。这篇文章对于需要频繁进行查找、插入和删除操作的情况下,使用vector类是一个很好的选择。 ... [详细]
  • 本文介绍了闭包的定义和运转机制,重点解释了闭包如何能够接触外部函数的作用域中的变量。通过词法作用域的查找规则,闭包可以访问外部函数的作用域。同时还提到了闭包的作用和影响。 ... [详细]
  • 本文介绍了lua语言中闭包的特性及其在模式匹配、日期处理、编译和模块化等方面的应用。lua中的闭包是严格遵循词法定界的第一类值,函数可以作为变量自由传递,也可以作为参数传递给其他函数。这些特性使得lua语言具有极大的灵活性,为程序开发带来了便利。 ... [详细]
  • 本文介绍了在rhel5.5操作系统下搭建网关+LAMP+postfix+dhcp的步骤和配置方法。通过配置dhcp自动分配ip、实现外网访问公司网站、内网收发邮件、内网上网以及SNAT转换等功能。详细介绍了安装dhcp和配置相关文件的步骤,并提供了相关的命令和配置示例。 ... [详细]
  • 向QTextEdit拖放文件的方法及实现步骤
    本文介绍了在使用QTextEdit时如何实现拖放文件的功能,包括相关的方法和实现步骤。通过重写dragEnterEvent和dropEvent函数,并结合QMimeData和QUrl等类,可以轻松实现向QTextEdit拖放文件的功能。详细的代码实现和说明可以参考本文提供的示例代码。 ... [详细]
  • Java序列化对象传给PHP的方法及原理解析
    本文介绍了Java序列化对象传给PHP的方法及原理,包括Java对象传递的方式、序列化的方式、PHP中的序列化用法介绍、Java是否能反序列化PHP的数据、Java序列化的原理以及解决Java序列化中的问题。同时还解释了序列化的概念和作用,以及代码执行序列化所需要的权限。最后指出,序列化会将对象实例的所有字段都进行序列化,使得数据能够被表示为实例的序列化数据,但只有能够解释该格式的代码才能够确定数据的内容。 ... [详细]
  • Centos7.6安装Gitlab教程及注意事项
    本文介绍了在Centos7.6系统下安装Gitlab的详细教程,并提供了一些注意事项。教程包括查看系统版本、安装必要的软件包、配置防火墙等步骤。同时,还强调了使用阿里云服务器时的特殊配置需求,以及建议至少4GB的可用RAM来运行GitLab。 ... [详细]
  • 本文介绍了九度OnlineJudge中的1002题目“Grading”的解决方法。该题目要求设计一个公平的评分过程,将每个考题分配给3个独立的专家,如果他们的评分不一致,则需要请一位裁判做出最终决定。文章详细描述了评分规则,并给出了解决该问题的程序。 ... [详细]
  • 阿,里,云,物,联网,net,core,客户端,czgl,aliiotclient, ... [详细]
  • baresip android编译、运行教程1语音通话
    本文介绍了如何在安卓平台上编译和运行baresip android,包括下载相关的sdk和ndk,修改ndk路径和输出目录,以及创建一个c++的安卓工程并将目录考到cpp下。详细步骤可参考给出的链接和文档。 ... [详细]
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社区 版权所有