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


推荐阅读
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社区 版权所有